问题描述
我有一个文本文件。我正在编写一个程序,以使用 fgetc 从文件中读取内容,并将其放入二维缓冲区中。
I have a text file. I am writing a program to read from the file using fgetc and put in a two dimensional buffer.
打印文件内容后,尽管已经检查了EOF和ERROR,但仍会打印一些垃圾直到缓冲区末尾,如下所示。我该怎么办?
After printing the contents of file, it's printing some junk until end of buffer despite having put the check for EOF and ERROR as shown below. How can I get it done?
unsigned char ch;
while(ch=fgetc(fp))
{
if(ch== EOF || ch==NULL)
break;
//OTHER INSTRUCTIONS
}
谢谢:)
推荐答案
EOF
是一个整数,值 -1
。
在while循环中执行 ch = fgetc(fp)
时,您会阅读放入未签名的字符
,根据定义,该字符不能被签名,因此不能等于 -1
。
When you do ch=fgetc(fp)
in the while loop, you read into an unsigned char
, that can by definition not be signed, so it can't be equal to -1
.
一种解决方案可能是将整数读入并检查 EOF
后将其转换为整数。
A solution could be to read into an integer and to cast it after having checked for EOF
.
int ch;
while(ch=fgetc(fp))
{
if(ch == EOF)
break;
//OTHER INSTRUCTIONS
}
请参阅。
这篇关于检测文本文件结尾,使用fgetc读取的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!