Chinaunix

标题: 07.08.09 [打印本页]

作者: jichunzhi    时间: 2007-08-09 22:29
标题: 07.08.09

               
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




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2