feof是一个c语言函数,既可用以判断二进制文件又可用以判断文本文件。feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为1,否则为0。
EOF是文件结束标志的文件。在文本文件中,数据是以字符的ASCⅡ代码值的形式存放,ASCⅡ代码的范围是0到255,不可能出现-1,因此可以用EOF作为文件结束标志。
当把数据以二进制形式存放到文件中时,就会有-1值的出现,因此不能采用EOF作为二进制文件的结束标志。为解决这一个问题,ASCI C提供一个feof函数,用来判断文件是否结束。
扩展资料:
feof的正确写法:
在VC里,只有当文件位置指针(fp->_ptr)到了文件末尾,然后再发生读/写操作时,标志位(fp->_flag)才会被置为含有_IOEOF。然后再调用feof(),才会得到文件结束的信息。
因此,如果运行如下程序:
char c
while(!feof(fp))
{
c = fgetc(fp)
printf("%X/n", c)
}
会发现多输出了一个FF,原因就是在读完最后一个字符后,fp->flag仍然没有被置为_IOEOF,因而feof()仍然没有探测到文件结尾。直到再次调用fgetc()执行读操作,feof()才能探测到文件结尾。这样就多输出了一个-1(即FF)。
正确的写法应该是:
char c
c = fgetc(fp)
while(!feof(fp))
{
printf("%X/n", c)
c = fgetc(fp)
}
参考资料来源:百度百科-feof
feof是C语言标准库函数,其原型在stdio.h中,其功能是检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0(即,文件结束:返回非0值,文件未结束,返回0值),文件结束符只能被clearerr()清除。(这里的检测流上的文件结束符就相当于声卡检测电流信号的一个过程)
int feof(FILE *stream)
参数
流 :FILE结构的指针
注意:feof判断文件结束是通过读取函数fread/fscanf等返回错误来识别的,故而判断文件是否结束应该是在读取函数之后进行判断。比如,在while循环读取一个文件时,如果是在读取函数之前进行判断,则如果文件最后一行是空白行,可能会造成内存错误。
扩展资料
相关函数
getc()
功能:函数从流中返回一个字符值。
语法:int getc(FILE * stream)
返回值:整数值。
函数种类:“stdio.h”
内容说明:此函数和fgetc函数相似,但它是以一个宏来实现的。另外它将不止一次地计算流参数咖,这对通常的宏的规则来说是一个例外。getc是一个已经高度优化的函数,所以该函数是进行单个字符读操作的最好的函数。
参考:如fputc();fgetc();putc();fopen()。
fputs()
功能:将字符串中的内容写到指定的流中。
语法: int fputs(const char *s,FILE * stream)
返回值:整数值。
函数种类:“stdio.h”
内容说明:函数将字符串指针s所指向的字符串中的内容写到流stream中。标志结束的空字符(NULL)不写。函数也不另外增加一个换行符。只是输出字符串中的所有字符。 函数操作成功时返回值为0,否则返回非0值。
如果流是以文本形式打开的,就会对有些字符进行翻译操作。这意味着字符串可能会与文件内容之间没有一一对应的映射关系。然而,当文件以二进制打开时,不发生字符翻译,在字符串与文件内容之间存在一一对应的映射关系。
参考资料来源:百度百科-fgetc
参考资料来源:百度百科-feof
feof(文件流指针),不到结尾返回0,否则返回1
就一个判断状态的函数
file
*fp=fopen。。。。
打开成功才能调用该函数
这个状态检测是当文件读取函数发生读失败才会出现