文档详情

第九节 文件.ppt

发布:2017-05-31约2.28万字共58页下载文档
文本预览下载声明
第九章 文件 第9章 文件 知识点1:文件的概念 知识点2:文件的打开和关闭 知识点3:文件的读写 #include stdio.h #include stdlib.h void main() { FILE *f; char pc[9][10]; int i; if ((f=fopen(c:\\ex9-3.txt,r))==NULL) { printf(Cannot open file); exit(1); } for (i=0;i=6;i+=3) fscanf(f,%s%s%s,pc[i],pc[i+1],pc[i+2]); fclose(f); printf( 公司 类型 重量\n); for (i=0;i=6;i+=3) printf(%10s %10s %7s\n,pc[i],pc[i+1],pc[i+2]); } 【例】读出上例所建立文件ex9-3.txt中的数据。 9.3.2 二进制文件读写函数 (1)写数据块函数fwrite() fwrite()用于向二进制文件写入一个数据块,其调用格式为: fwrite(buf,size,count,fp); 其中,buf可以是数组名或指向数组的指针,用于提供要写入文件的数据;size是无符号整型表达式,用于规定要写入的每个数据项的长度(字节数);count是整型表达式,用于指定数据项的个数;fp是文件指针。 该函数的功能是向fp所指的文件中写入一个由buf指向的数据块,该数据块共有count个数据项,每个数据项有size个字节。如果执行成功,返回实际写入的数据项个数;若所写数据项少于实际需要的数据项,则出错。 1. 数据块读写函数fread()和fwrite() #include stdio.h #include stdlib.h FILE *fp; void main() { int sam[10],i; if (!(fp=fopen(c:\\ex9-4.dat,wb))) { printf(Cannot open file\n); exit(1); } for (i=0;i10;i++) scanf(%d,sam[i]); fwrite(sam,sizeof(sam),1,fp); fclose(fp); } 【例】从键盘输入10个整数,将它们存放在int型数组sam中,将该数组作为一个数据块写入文件ex9-4.dat中。 用“wb”方式打开文件,从键盘输入10个整数存放在数组sam中,然后用fwrite()将数组sam作为一个数据块写入文件ex9-4.dat。 在程序的fwrite(sam,sizeof(sam),1,fp)语句中,从sizeof(sam)可以看出数据块是以整个数组为单位的,故数据块个数为1,若将该语句改成 fwrite(sam,sizeof(int),10,fp); 数据块就以一个整数为单位,这时,数据块个数应该是10。 fread()用于从二进制文件中读出一个数据块,调用格式为: fread(buf,size,count,fp); 其中,buf、size、count和fp的含义和用法与fwrite()完全相同。该函数的功能是从fp所指的文件中,一次读出长度为size字节的count个数据项,然后存放在buf中。在读入过程中,自动把文件中的回车符和表示制表符和换行符的转义序列转换成换行符。函数执行成功时,返回实际读入的数据项个数;如果读出项目比调用中所需项目少,则出错。 (2) 读数据块函数fread() #include stdio.h #include stdlib.h FILE *fp; void main() { int b[10],i; if (!(fp=fopen(c:\\ex9-4.dat,rb))) { printf(Cannot ope
显示全部
相似文档