试图在论坛上查看,但无法重新开始。
我正在尝试阅读文字。文字是: “到b”
但是在使用fgetc()时,未达到EOF,最后我得到'\ n'然后是无限'y'样本。
这是我的代码:
Node* getBinTree(FILE *fsrc){
Node* root=NULL;
unsigned char tmp=NULL;
while ((tmp=fgetc(fsrc))!=EOF)
globalArray[tmp]++;
return root;
}
非常感谢
答案 0 :(得分:2)
您遇到的麻烦与fgetc
返回的内容有关。返回类型为int
,但您将其存储到unsigned char
。
您必须将此更改为int
,或者使用feof
来检查文件结束条件。
答案 1 :(得分:1)
使用int tmp
。 EOF不能存储在char中,因为它不是char。
答案 2 :(得分:1)
fgetc()返回一个有符号整数,但是你的程序将结果存储在unsigned char中。当从有符号类型转换为无符号类型时,负数(EOF通常定义为-1)变为正数(在这种情况下为十进制256),因此如果EOF为负数,则返回值与EOF的比较将始终返回false 。要修复代码,请将“tmp”的声明从“unsigned char”更改为“int”。