C语言复习_用格式化和二进制方式读写文件

用格式化和二进制方式读写文件

1.用格式化方式读写文本文件

大家已经熟悉的用printf函数和scanf函数向终端进行格式化的输入输出,即用各种不同的格式以终端为对象输入输出数据。其实文件也能进行格式化输入输出。这时就要用到fprintf函数和fscanf函数,他们的一般调用方式为:

fprintf(文件指针,格式字符串,输出列表);
fscanf(文件指针,格式字符串,输入列表);

例如:

fprintf(fp,"%d,%6.2f",i,f);

它的作用是将int型变量i和float变量f的值按%d和%6.2f输出到fp所指向文件中。

fscanf(fp,"%d,%f",&i,&f);

它的作用是磁盘中文件如果有字符“3,4.5”,则从磁盘文件中读取整数3给整型变量i,读取4.5给float型变量f。

用fprintf函数和fscanf函数对磁盘文件读写,使用方便,容易理解,但由于输入时要把文件中的ASCII码转换为二进制形式在保存在内存变量中,在输出时要把内存中的二进制形式转化成字符,要花费较多的时间。因此,在磁盘频繁交换数据的情况下,最好不要用。而用下面介绍的fread函数和fwrite函数进行二进制的读写。

2 用二进制方式向文件读写一组数据

2.1 写文件

fwrite(buffer,size,count,fp);

功能:以数据块的方式给文件写入内容
参数:
buffer:准备写入文件数据的地址
size: size_t 为 unsigned int类型,此参数指定写入文件内容的块数据大小
count:写入文件的块数
fp:已经打开的文件指针
返回值:
成功:实际成功写入文件数据的块数目,此值和 count 相等
失败:0
如果有一个Struct student-type结构体类型

struct Student_type
{
    char name[10];
    int num;
    int age;
    char addr[30];
} stud[40];

用for循环把内存中的学生数据输出到磁盘中

for(i=0;i<40;i++)
{
	fwrite(&stud[i],sizeof(struct Student_type),1,fp);
}

2.2 读文件

fread(buffer,size,count,fp)
功能:以数据块的方式从文件中读取内容
参数:
buffer:存放读取出来数据的内存空间
size: unsigned int类型,此参数指定读取文件内容的块数据大小
count:读取文件的块数,读取文件数据总大小为:size * count
fp:已经打开的文件指针
返回值:
成功:实际成功读取到内容的块数,如果此值比小count,但大于0,说明读到文件的结尾。
失败:0
同样是上面的结构体用for循环输入学生数据

for(i=0;i<40;i++)
{
	fread(&stud[i],sizeof(struct Student_type),1,fp);
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值