fread
函数名称:fread
函数功能: 从一个流中读数据
函数原型: size_t fread(void* buffer, size_t size, size_t count, FILE* stream);
参数说明:
- buffer:用于接收数据的地址(指针)。
- size:单个元素的大小,单位是字节而不是位,例如读取一个int型数据就是4个字节。
- count:元素个数。
- stream:提供数据的文件指针。
返回值:读取的元素的个数。
fwrite
函数名称:fwrite
函数功能:向文件读入写入一个数据块
函数原型:size_t fwrite(void* buffer, size_t size, size_t count, FILE* stream);
参数说明:
- buffer:是一个指针,对fwrite来说,是要输出数据的地址。
- size:单个元素的大小,单位是字节而不是位,例如读取一个int型数据就是4个字节。
- count:要写入的元素个数。
- stream:目标文件指针。
返回值:返回实际写入元素的个数。
注意:这个函数以二进制形式对文件进行操作,不局限于文本文件。
说明:写入到文件的哪里? 这个与文件的打开模式有关,如果是w+,则是从file pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a+,则从文件的末尾开始添加,文件长度加大,而且是fseek函数对此函数没有作用。
feof
函数名称:feof
函数功能:检测流上的文件结束符。
Checks whether the End-of-File indicator associated with stream is set, returning a value different from zero if it is.
This indicator is generally set by a previous operation on the stream that reached the End-of-File.
Further operations on the stream once the End-of-File has been reached will fail until either rewind, fseek or fsetpos is successfully called to set the position indicator to a new value.
函数原型:int feof ( FILE * stream );
feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为1,否则为0。
feof函数与EOF?
EOF是文本文件结束的标志。在文本文件中,数据是以字符的ASCⅡ代码值的形式存放,普通字符的ASCⅡ代码的范围是32到127(十进制),EOF的16进制代码为0x1A(十进制为26),因此可以用EOF作为文件结束标志。
当把数据以二进制形式存放到文件中时,就会有-1值的出现,因此不能采用EOF作为二进制文件的结束标志。为解决这一个问题,ASCI C提供一个feof函数,用来判断文件是否结束。feof函数既可用以判断二进制文件又可用以判断文本文件。