c语言格式化写入文件大小,利用C语言格式化读写文件

“在C语言中进行格式化读写文件”按照字面意思通常大家都会理解为将读写文件进行格式化的操作,那么到底我们是不是真的将读写文件进行格式化的操作呢?下面课课家笔者就为大家简单介绍C语言中格式化读写文件的概念和具体的操作编写方法。

3d2d3df81586ab9f633316c6c7349ec0.png

首先笔者先给大家介绍fscanf()和fprintf()函数的概念。fscanf()和fprintf()函数与前面使用的scanf()和printf()功能相似,它们都是格式化读写函数,具体的区别在于fscanf()和fprintf()的读写对象不是键盘和显示器而是磁盘文件。

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

#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

scanf("%s%d%d%f",pa->name,&pa->num,&pa->age,&pa->score);

}

pa=boya;

//将boya中的数据写入到文件

for(i=0;i

fprintf(fp,"%s%d%d%f\\n",pa->name,pa->num,pa->age,pa->score);

}

//重置文件指针

rewind(fp);

//从文件中读取数据,保存到boyb

for(i=0;i

fscanf(fp,"%s%d%d%f\\n",pb->name,&pb->num,&pb->age,&pb->score);

}

pb=boyb;

//将boyb中的数据输出到显示器

for(i=0;i

printf("%s%d%d%f\\n",pb->name,pb->num,pb->age,pb->score);

}

fclose(fp);

return0;

}

输出结果:

Inputdata:

Tom21590.5↙

Hua11499↙

Tom21590.500000

Hua11499.000000

此时我们打开D:\\\\demo.txt,可以发现文件的内容是可以阅读且格式比较清晰。我们通过用fprintf()和fscanf()函数,在读写配置文件、日志文件时会比较方便,不但程序能够识别,而且用户也可以看懂并手动修改。另外如果我们将fp设置为stdin,那么fscanf()函数将会从键盘读取数据,与scanf的作用相同;设置为stdout,那么fprintf()函数将会向显示器输出内容,与printf的作用相同。具体比如:

#include

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=30

本次利用C语言格式化读写文件的讲解到此暂告一段落,如果以后有什么内容继续进行补充或者修改的话,笔者会在此进行相关的内容补充或者修改的工作,同时也欢迎大家对本次的讲解提出自己的建议和补充,最后希望本次的教程对大家学习C语言能够起到一定的帮助作用!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值