第9章文件操作.pptVIP

  • 5
  • 0
  • 约1.29万字
  • 约 53页
  • 2017-05-30 发布于北京
  • 举报
9.3.2文件的读函数 例9-6 使用fgets()函数改写例9-5。 #includestdio.h void main() { FILE *fp; char ch[50]; int n; if((fp=fopen(c:\\myfile.txt,r))==NULL) { printf(Cannot open file the file!); getch(); /* 暂停 */ exit(0); /* 退出程序 */ } while(!feof(fp)) { fgets(ch,50,fp); printf(%s,ch); } fclose(fp); } 9.3.2文件的读函数 3.格式化读函数fscanf() fscanf函数与前面使用的scanf函数的功能相似,都是格式化读写函数。两者的区别在于 fscanf 函数和fprintf函数的读写对象不是键盘和显示器,而是磁盘文件。 调用格式为: fscanf(文件指针,格式字符串,输入表列) 例如:fscanf(fp,%d%f,i,x); 函数的返回值为EOF,表明读错误;否则读数据成功。 例9-7:将例9-3所建立的文本文件“c:\data.txt”的数据读中来,按升序排序后,按同样格式追加写原文件在后,与原数据之间空前2行。 9.3.2文件的读函数 #includestdio.h void scandata(int a[],int n); void sort(int a[],int n); void putdata(int a[],int n); void main() { int a[20],i; scandata(a,20); sort(a,20); putdata(a,20); } void scandata(int a[],int n) { int i; FILE *fp; if((fp=fopen(c:\\data.txt,r))==NULL) { printf(Cannot open file!); getch(); exit(0); } for(i=0;in;i++) { if(i%5==0) fscanf(fp,%5d,a[i]); else fscanf(fp,,%5d,a[i]); } fclose(fp); } void sort(int a[],int n) { int i,j,k,t; for(i=0;in-1;i++) { k=i; for(j=i+1;jn;j++) if(a[k]a[j])k=j; t=a[i]; a[i]=a[k]; a[k]=t; } } void putdata(int a[],int n) { int i; FILE *fp; if((fp=fopen(c:\\data.txt,a))==NULL) { printf(Cannot open file!); getch(); exit(0); } fprintf(fp,\n\n); for(i=0;in;i++) { if(i%5==0) fprintf(fp,%5d,a[i]); else fprintf(fp,,%5d,a[i]); if((i+1)%5==0) fprintf(fp,\n); } fclose(fp); } 9.3.2文件的读函数 程序运行后,用记事本打开“c:\data.txt”文件如下: 9.3.2文件的读函数 4.读取数据块函数fread() C语言还提供了用于整块数据的读函数。可用来读一组数据,如一个数组,一个结构变量的值等。读数据块函数调用的一般形式为: fread(buffer,size,count,fp); 其中,buffer是一个指针,在fread函数中,它表示存放输入数据的首地址。size 表示数据块的字节数。count 表示要读写的数据块块数。fp 表示文件指针。 例如:有定义:float a[5]; fread(a,4,5,fp); 其意义是从fp所指的文件中,每次读4个字节(一个实数)送入实数组a中,连续读5次,即读5个实数到a中。 9.

文档评论(0)

1亿VIP精品文档

相关文档