问题:今天遇到一个问题,程序在读了文件中就没有退出来,便gdb调试。后来才发现是是没有找到文件结束符。
资源:feof() 有两个返回值,如果是遇到文件结束符,返回的是1.否者是0.
在C的标准库中,EOF(end of file)也是表示文件结束符。但是以EOF作为文件结束符的必须是文本文件。文本文件都是字符的ASCII存放。ASCII值的范围是0-255,不会出现-1,所以可以用-1在表示文件结束。
但是在如果以二进制的的形式存放文件,就会出现-1.这时就不能用EOF作为文件的结束符。
为了解决这个问题,C提供了一个feof()函数,用来判断文件是否结束。
while(!feof(fp))
{
file.push_back( fgetc(fp) );
}