C语言fread()函数:以数据块形式读取文件
C语言 fread() 函数用来将二进制文件中的数据以“二进制数据块”的形式读取到内存中。
功能:在文件指针指定的文件中读取 count 个数据块(每个数据块为 size 个字节),存放到 buf 指定的内存单元地址中。调用成功,函数返回实际读出的数据块个数;出错或到文件末尾时返回 0 值。
利用 for 循环语句把初始化过的结构体数组 stud 中的数据写入文件 www.weixueyuan.net.bin 中,写数据结束后文件指针指向文件的结尾处。
由于后面还要从文件中读取数据,所以需要重置文件指针于文件开头处,这里使用了 rewind() 函数重置文件指针读写位置,最后利用 while 循环语句把文件 www.weixueyuan.net.bin 中的数据写入结构体数组 stud1 中,并在屏幕上输出。
二进制数据文件不能用一般的软件打开查看其中的内容,只能通过程序读出内容进行查看。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
二进制文件以“二进制数据块”为单位进行数据的读写操作。所谓“二进制数据块”就是指在内存中连续存放的具有若干字节长度的二进制数据,如整型数据、实型数据或结构体类型数据等,数据块输入/输出函数对于存取结构体类型的数据尤为方便。
fread() 函数位于 <stdio.h> 头文件中,其一般使用格式如下:fread(buf,size,count,文件指针);
其中,buf 是输入数据在内存中存放的起始地址。其他各参数的含义同 fwrite() 函数。功能:在文件指针指定的文件中读取 count 个数据块(每个数据块为 size 个字节),存放到 buf 指定的内存单元地址中。调用成功,函数返回实际读出的数据块个数;出错或到文件末尾时返回 0 值。
示例
使用 fwrite() 函数和 fread() 函数对 www.weixueyuan.net.bin 文件进行写入和读取操作。代码如下:#include "stdio.h" #include "stdlib.h" int main() { FILE *fp; struct student /*定义结构体数组并初始化*/ { char num[8]; int score; }stud[]={{"2019101",86},{"2019102",60},{"2019103",94},{"2019104",76},{"2019105",50}},stud1[5]; int i; if((fp=fopen("www.weixueyuan.net.bin","wb+"))==0) /*以读写方式新建并打开文件www.weixueyuan.net.bin,测试是否成功*/ { printf("不能打开文件\n"); exit(0); } for(i=0;i<5;i++) fwrite(&stud[i],sizeof(struct student),1,fp); /*向fp指向的文件中写入数据*/ rewind(fp); /*重置文件位置指针于文件开始处,以便读取文件*/ printf("学号 成绩\n"); /*在屏幕上输出提示信息*/ i=0; while(!feof(fp)) /*循环读取文件中的数据,直到检测到文件结束标志*/ { fread(&stud1[i],sizeof(struct student),1,fp); /*读取fp指向的文件中的数据并写入结构体数组stud1中*/ printf("%s %d\n",stud1[i].num,stud1[i].score); } /*向屏幕上输出结构体数组stud1中的数据*/ fclose(fp); /*关闭文件*/ }运行结果:
学号 成绩
2019101 86
2019102 60
2019103 94
2019104 76
2019105 50
2019105 50
利用 for 循环语句把初始化过的结构体数组 stud 中的数据写入文件 www.weixueyuan.net.bin 中,写数据结束后文件指针指向文件的结尾处。
由于后面还要从文件中读取数据,所以需要重置文件指针于文件开头处,这里使用了 rewind() 函数重置文件指针读写位置,最后利用 while 循环语句把文件 www.weixueyuan.net.bin 中的数据写入结构体数组 stud1 中,并在屏幕上输出。
二进制数据文件不能用一般的软件打开查看其中的内容,只能通过程序读出内容进行查看。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。