博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言数据块读写函数:fread和fwrite
阅读量:6732 次
发布时间:2019-06-25

本文共 1611 字,大约阅读时间需要 5 分钟。

1.fread和fwrite函数的定义
  size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *fp);
  size_t fread(const void *ptr, size_t size, size_t nmemb, FILE *fp);     (1)ptr:缓冲区的首地址,对fread来说,它是读入数据的存放地址;对fwrite来说,是要输出数据的地址。  (2)size:要读写的字节数。  (3)nmemb:要进行读写多少个size字节的数据项。  (4)fp:文件结构指针。  (5)返回值是实际写入的nmemb数目。
2.一个例子  
1 #include 
2 3 struct Student 4 { 5 int id; 6 char name[20]; 7 }; 8 9 int main()10 {11 FILE *pRead, *pWrite;12 struct Student stu[3] = {
{
1, "zhangsan"}, {
2, "lisi"}, {
3, "wangwu"}};13 14 //以二进制形式打开文件,用于写入15 pWrite = fopen("stu_bin.txt", "wb");16 if(NULL != pWrite)17 {18 int count = fwrite(stu, sizeof(struct Student), 3, pWrite);19 printf("Write %d students!\n", count);20 fclose(pWrite);//关闭文件指针,否则无法读取文件21 22 //以二进制形式打开文件,用于读取23 pRead = fopen("stu_bin.txt", "rb");24 if(NULL != pRead)25 {26 struct Student buf[3];27 struct Student *tmp = buf;28 29 while(!feof(pRead))30 {31 int i = fread(tmp, sizeof(struct Student), 1, pRead);32 printf("%d ", i);//应该依次输出1,1,1,033 tmp++;34 }35 36 int i = 0;37 printf("\n");38 for(; i < count; i++)39 {40 printf("%d\t%s\n", buf[i].id, buf[i].name);41 }42 43 fclose(pRead);44 }45 }46 47 return 0;48 }
输出结果:

 

转载于:https://www.cnblogs.com/sb2012/archive/2012/10/02/2710532.html

你可能感兴趣的文章
es6摇一摇类库
查看>>
Ant Desing Pro2.0(二)新增页面
查看>>
LeetCode 319. Bulb Switcher
查看>>
第一个springboot项目
查看>>
Prometheus 500 Internal Privoxy Error 异常解决
查看>>
2018年前端面试题(秋季面试随意整理的)
查看>>
深圳Android技术大会分享
查看>>
requestAnimationFrame 兼容方案
查看>>
Java™ 教程(管理源文件和类文件)
查看>>
Linux运维之路-安全防护OpenResty
查看>>
说说不知道的Golang中参数传递
查看>>
深入解析Vue底层实现原理
查看>>
es6之解构赋值
查看>>
如何用外部程序优化SQL语句中的IN和EXISTS
查看>>
webpack学习进阶(一)
查看>>
虚拟机硬盘vmdk压缩瘦身并挂载到VirtualBox
查看>>
详解css媒体查询
查看>>
关于浏览器缓存问题(图片更换后,页面仍优先读取缓存)
查看>>
Event Loop 其实也就这点事
查看>>
前端学习资源汇总
查看>>