免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 681 | 回复: 0
打印 上一主题 下一主题

07.08.09 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-09 22:29 |只看该作者 |倒序浏览

               
fread函数和fwrite函数
1.函数功能
用来读写一个数据块。
2.一般调用形式
fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
3.说明
(1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。
(2)size:要读写的字节数;
(3)count:要进行读写多少个size字节的数据项;
(4)fp:文件型指针。
4.例:
1.fread(&id,1,10,f)就是把f里面的值读到id里面,每次读1个字节,一共读10次,或者把id里面的值都读完,不到10次也会停止。
2.fwrite(&id,1,10,f)就是把id里面的值读到f里面,每次读1个字节,一共读10次或是fread(&id,10,1,f)就是把id里面的值读到里面,每次读10个字节,一共读1次。

关于read write函数的一点补充:
因为每个read, write都因调用系统调用而进入内核,所以称这些函数为不带缓存的I / O函数。所有的磁盘I/O都要经过内核的块缓冲区(也就是内核的缓冲区高速缓存)既然read write的数据都要被内核缓冲,那么用户的进程不会对这二个函数自动缓冲,每次read write就要进行一次系统调用。
5  在unix中输入函数有以几种:
   第一类:输入单个字符有int getc (FILE *fp); int fgetc (FILE *fp) ;int getchar(void);
          三个函数的返回:若成功则为下一个字符,若已处文件尾端或出错则为 E O F
   其中函数getchar等价于getc(stdin),getc是被实现为宏的,而fgetc则不能实现为宏,只能是用函数实现的,所以前者的调用时间比后者要少得多。这三个函数以unsigned char 类型转换为int的方式返回下一个字符。说明为不带符号的理由是,如果最高位为 1也不会使返回值为负。要求整型返回值的理由是,这样就可以返回所有可能的字符值再加上一个已发生错误或已到达文件尾端的指示值。在 中的常数EOF被要求是一个负值,其值经常是- 1。这就意味着不能将这三个函数的返回值存放在一个字符变量中,以后还要将这些函数的返回值与常数 EOF相比较。注意,不管是出错还是到达文件尾端,这三个函数都返回同样的值。为了区分这两种不同的情况,必须调用 ferror或feof。
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/45292/showart_357081.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP