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语言格式化读写文件的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!