77范文网 - 专业文章范例文档资料分享平台

C语言-桂林理工大学11-第十一章 文件操作(3)

来源:网络收集 时间:2019-01-10 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

C语言程序设计 授课教案

#include #include #include struct student { int num; char name[20]; char sex; int age; float score; }; /* 共5个成员,占用29 bytes */ main() { struct student stud; char numstr[20],ch; /* numstr-临时字符串,保存学号/年龄/成绩,然后转换为相应类型; ch-Y/N */ FILE *fp; if((fp=fopen(\以二进制、写方式打开文件 */ { printf(\ exit(1); 键盘输入数 } 空读(有读取动作,但不据,保存在结 保存读取的值-‘\\n’) 构体变量中 do { printf(\ printf(\ printf(\ printf(\printf(\ /* 每次将一个准备好的结构体变量的所有内容写入文件(写一个记录) */ fwrite(&stud,sizeof(struct student),1,fp); printf(\ }while(toupper(ch)=='Y'); /* 循环读数据/写记录 */ fclose(fp); /* 关闭文件 */ }

11 C语言程序设计 授课教案

说明:

(1) 空读:在输入字符,并按回车后,实际缓冲中有两个字符(如‘f/m’和‘\\n’),只

要前面有意义的字符(‘f/m’)。可以用“空读”略过‘\\n’。

(2) 什么情况要空读?如果后面的读取键盘是读取数字(整数/浮点数),不必空读;如果

后面的读取键盘是读字符或字符串,应当“空读”。

(3) 思考:如果按照教材p212输入两个记录的数据,那么最后产生的文件长度是多少?

(58 bytes)

备注:C语言即使写文本文件,关闭时,也不自动加文件结束符。

11.5 文件的定位

对文件的读写可以顺序读写,也可以随机读写。

1、文件顺序读写:从文件的开头开始,依次读写数据。(从文件开头读写直到文件尾部) 2、文件随机读写(文件定位读写):从文件的指定位置读写数据。

3、文件位置指针:在文件的读写过程中,文件位置指针指出了文件的当前读写位置(实际上

是:下一步读写位置),每次读写后,文件位置指针自动更新指向新的读写位置(实际上是:下一步读写位置)。 注意区分:文件位置指针,文件指针。 可以通过文件位置指针函数,实现文件的定位读写。文件位置指针函数有: ? ? ?

rewind重返文件头函数 fseek位置指针移动函数 ftell获取当前位置指针函数

12 C语言程序设计 授课教案

11.5.1 rewind-重返文件头函数 功能:使文件位置指针重返文件的开头。

例:有一个文本文件,第一次使它显示在屏幕上,第二次把它复制到另外一个文件中。 解:

#include main() { FILE *fp1,*fp2; fp1=fopen(\打开文件 */ fp2=fopen(\ /* 从文件string.txt读出,写向屏幕 */ while(!feof(fp1))putchar(getc(fp1)); /* 重返文件头 */ rewind(fp1); /* 从文件string.txt读出,写向文件string2.txt */ while(!feof(fp1))putc(getc(fp1),fp2); fcloseall(); /* 关闭文件 */ }

13 C语言程序设计 授课教案

11.5.2 fseek-位置指针移动函数

功能:移动文件读写位置指针,以便文件的随机读写。 格式:fseek(FILE *fp,long offset,int whence); 参数:

(1)fp-文件指针.

(2)whence-计算起始点(计算基准).计算基准可以是下面符号常量: 符号常量 SEEK_SET SEEK_CUR SEEK_END 符号常量的值 含义 0 1 2 从文件开头计算 从文件指针当前位置计算 从文件末尾计算 (3)offset-偏移量(单位:字节).从计算起始点开始再偏移offset,得到新的文件指针位置。offset为正,向后偏移;offset为负,向前偏移。 例如:

fseek(fp,100,0);/* 将位置指针移动到:从文件开头计算,偏移量为100个字节的位置 */ fseek(fp,50,1);/* 将位置指针移动到:从当前位置计算,偏移量为50个字节的位置 */ /* 向前移动 */

fseek(fp,-30,1);/* 将位置指针移动到:从当前位置计算,偏移量为-30个字节的位置 */ /* 向后移动 */

fseek(fp,-10,2);/* 将位置指针移动到:从文件末尾计算,偏移量为-10个字节的位置 */ /* 向后移动 */

例:编程读出文件stu.dat中第三个学生的数据。

14 C语言程序设计 授课教案

#include struct student { int num; char name[20]; char sex; int age; float score; }; main() { struct student stud; FILE *fp; int i=2; if((fp=fopen(\ { printf(\ exit(1); } fseek(fp,i*sizeof(struct student),SEEK_SET); /* 定位第3个记录 */ if(fread(&stud,sizeof(struct student),1,fp)==1) /* 将1个记录读出 */ { printf(\打印此记录 */ stud.age,stud.score); } else printf(\ fclose(fp); }

例:编写一个程序,对文件stud.dat加密。加密方式是对文件中所有第奇数个字符的中间两个二进制位进行取反。 解:

对一个数据取反,可以用“~”运算符;对一个数据某个位取反可以将该位与1异或“^”。

15 C语言程序设计 授课教案

#include main() { FILE *fp; unsigned char ch1,ch2; if((fp=fopen(\打开已经存在的文件,可写,二进制 */ { printf(\ } ch2=24; /* 密匙 ch<=0001,1000 */ ch1=fgetc(fp);/* 从文件读第一个字符,ch1 * while(!feof(fp)) { ch1=ch1^ch2; /* 加密字符:与1异或该位取反;与0异或该位不变 */ fseek(fp,-1,SEEK_CUR); /* 写入原来位置 */ fputc(ch1,fp); fseek(fp,1,SEEK_CUR); /* 跳过一个字符(偶数字符),ch1 */ ch1=fgetc(fp); /* 从文件读下一个字符,ch1 */ } fclose(fp); /* 关闭文件 */ } 11.5.3 ftell-获取当前位置指针函数

功能:得到文件当前位置指针的位置,此位置相对于文件开头的。 格式:long ftell(FILE *fp);

返回值:就是当前文件指针相对文件开头的位置。

16

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C语言-桂林理工大学11-第十一章 文件操作(3)在线全文阅读。

C语言-桂林理工大学11-第十一章 文件操作(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/416469.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: