C语言 格式化读写文件详解
fscanf()和fprintf()函数与前面使用的scanf()和printf()功能相似,都是格式化读写函数,两者的区别在于fscanf()和fprintf()的读写对象不是键盘和显示器,而是磁盘文件。
这两个函数的原型为:
intfscanf(FILE*fp,char*format,...);
intfprintf(FILE*fp,char*format,...);
fp为文件指针,format为格式控制字符串,...表示参数列表。与scanf()和printf()相比,它们仅仅多了一个fp参数。例如:
FILE*fp; inti,j; char*str,ch; fscanf(fp,"%d%s",&i,str); fprintf(fp,"%d%c",j,ch);
fprintf()返回成功写入的字符的个数,失败则返回负数。fscanf()返回参数列表中被成功赋值的参数个数。
【示例】用fscanf和fprintf函数来完成对学生信息的读写。
#include<stdio.h> #defineN2 structstu{ charname[10]; intnum; intage; floatscore; }boya[N],boyb[N],*pa,*pb; intmain(){ FILE*fp; inti; pa=boya; pb=boyb; if((fp=fopen("D:\\demo.txt","wt+"))==NULL){ printf("Cannotopenfile,pressanykeyexit!"); getch(); exit(1); } //从键盘读入数据,保存到boya printf("Inputdata:\n"); for(i=0;i<N;i++,pa++){ scanf("%s%d%d%f",pa->name,&pa->num,&pa->age,&pa->score); } pa=boya; //将boya中的数据写入到文件 for(i=0;i<N;i++,pa++){ fprintf(fp,"%s%d%d%f\n",pa->name,pa->num,pa->age,pa->score); } //重置文件指针 rewind(fp); //从文件中读取数据,保存到boyb for(i=0;i<N;i++,pb++){ fscanf(fp,"%s%d%d%f\n",pb->name,&pb->num,&pb->age,&pb->score); } pb=boyb; //将boyb中的数据输出到显示器 for(i=0;i<N;i++,pb++){ printf("%s%d%d%f\n",pb->name,pb->num,pb->age,pb->score); } fclose(fp); return0; }
运行结果:
Inputdata:
Tom21590.5↙
Hua11499↙
Tom 2 15 90.500000
Hua 1 14 99.000000
打开D:\\demo.txt,发现文件的内容是可以阅读的,格式非常清晰。用fprintf()和fscanf()函数读写配置文件、日志文件会非常方便,不但程序能够识别,用户也可以看懂,可以手动修改。
如果将fp设置为stdin,那么fscanf()函数将会从键盘读取数据,与scanf的作用相同;设置为stdout,那么fprintf()函数将会向显示器输出内容,与printf的作用相同。例如:
#include<stdio.h> intmain(){ inta,b,sum; fprintf(stdout,"Inputtwonumbers:"); fscanf(stdin,"%d%d",&a,&b); sum=a+b; fprintf(stdout,"sum=%d\n",sum); return0; }
运行结果:
Inputtwonumbers:1020↙
sum=3036.html
以上就是对 C语言格式化读写文件的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!