- 1、本文档共42页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十三章 文件;本章要点;C文件概述;C文件概述;文件的分类
按数据的组织形式:
ASCII文件(文本文件):每一个字节放一个ASCII代码
二进制文件:把内存中的数据按其在内存中的存储形
式原样输出到磁盘上存放.;例:整数10000在内存中的存储形式以及分别按ASCII码形式和二进制形式输出如下图所示:;ASCII文件便于对字符进行逐个处理,也便于输出字符。但一般占存储空间较多,而且要花费转换时间。
二进制文件可以节省外存空间和转换时间,但一个
字节并不对应一个字符,不能直接输出字符形式。
一般中间结果数据需要暂时保存在外存上,以后又
需要输入内存的,常用二进制文件保存。
;C语言对文件的处理方法:
缓冲文件系统:系统自动地在内存区为每一个正
在使用的文件开辟一个缓冲区。用缓冲文件系统
进行的输入输出又称为高级磁盘输入输出。
非缓冲文件系统:系统不自动开辟确定大小的缓
冲区,而由程序为每个文件设定缓冲区。用非缓
冲文件系统进行的输入输出又称为低级输入输出
系统。;说明;文件类型指针;文件类型指针;文件的打开与关闭;文件使用方式 含 义
“r” (只读)为输入打开一个文本文件
“w” (只写)为输出打开一个文本文件
“a” (追加)向文本文件尾增加数据
“rb” (只读)为输入打开一个二进制文件
“wb” (只写)为输出打开一个二进制文件
ab“ (追加)向二进制文件尾增加数据
r+“ (读写)为读/写打开一个文本文件
w+” (读写)为读/写建立一个新的文本文件
a+” (读写)为读/写打开一个文本文件
rb+“ (读写)为读/写打开一个二进制文件
“wb+“ (读写)为读/写建立一个新的二进制文件
“ab+” (读写)为读/写打开一个二进制文件;文件的打开与关闭;文件的读写;fgetc函数
函数调用:
ch=fgetc( fp );
函数功能:
从指定的文件读入一个字符,该文件必须是以读或
读写方式打开的。
返回值:
读取成功一个字符,赋给ch。
如果遇到文件结束符,返回一个文件结束标志EOF(-1) 。;常见的读取字符操作;常见的读取字符操作;fputc和fgetc函数使用举例;将一个磁盘文件中的信息复制到另一个磁盘文件中 。 ;复制一个二进制文件,利用main参数,在输入命令行是将两个文件名输入。;文件的读写;若有如下结构类型:
struct student_type
{char name[10];
int num;
int age;
char addr[30];} stud[40];
可以用fread和fwrite来进行数据的操作:
for(i = 0; i 40;i++)
fread(stud[i], sizeof(struct student_type),1,fp);
for(i = 0; i 40;i++)
fwrite(stud[i], sizeof(struct student_type),1,fp);;从键盘输入4个学生的有关数据,然后把它们转存
到磁盘文件上去。;验证磁盘文件“stu-list”中是否已存在此数据,用以下程序从“stu-list”文件中读入数据,然后在屏幕上输出;如果已有的数据已经以二进制形式存储在一个磁盘文件“stu-dat”中,要求从其中读入数据并输出到
“stu-list”文件中,可以编写一个load函数,从磁盘文件中读二进制数据。 ;3) 格式化读写函数(fprintf()和fscanf())
函数调用:
fprintf ( 文件指针,格式字符串,输出表列);
fscanf ( 文件指针,格式字符串,输入表列);
函数功能:
从磁盘文件中读入或输出字符。
例:
fprintf(fp,”%d,%6.2f”,i,t);
fscanf(fp,”%d,%f”,i,t);;用fprintf和fscanf函数对磁盘文件读写,使用方便,容易理解,但由于在输入时要将ASCII码转换为二进制形式,在输出时又要将二进制形式转换成字符,花费时间比较多。因此,在内存与磁盘频繁交换数据的情况下,最好不用fprintf和fscanf函数,而用fread和fwrite函数。;4) 其他读写函数
putw()和getw()
函数调用:
putw(int i,FILE * fp);
int i = getw(FILE * fp);
函数功能:
对磁盘文件中读写一个字(整数)。
例:
putw(10,fp);
i = getw(fp)
文档评论(0)