c++ 文件的二进制读取 为什么会多一个-1??急!!

2024-12-01 08:49:41
推荐回答(4个)
回答(1):

楼主你好!
格式:int fgetc(FILE *stream);
意为从文件指针stream指向的文件中读取一个字符,读取一个字节后,光标位置后移一个字节。
这个函数的返回值,是返回所读取的一个字节。如果读到文件末尾或者读取出错时返回EOF。
EOF:
在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。
希望我的回答对你有帮助!

回答(2):

又见feof再fgetc!

执行顺序来说,feof是放在fgetc后面用的不是放在fgetc前面用的。
while(1)
{
c=fgetc(fp);
if (feof(fp)) break;
cout<<(int)c<<" ";
}

回答(3):

增加一个判断语句,如果的文件结束符,就不输出:
while(!feof(fp))
{
c=fgetc(fp);
if(c!=EOF)
cout<<(int)c<<" ";
}

回答(4):

文件结束标志..EOF = -1 .