试图在论坛上寻找,但无法重新分配。
我试着从文本中读出来。案文如下:"To 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;}
非常感谢
发布于 2015-05-09 12:38:09
您遇到的麻烦与fgetc返回的内容有关。返回类型为int,但要将其存储到unsigned char中。
您必须将其更改为int,或者使用feof检查文件结束条件。
发布于 2015-05-09 12:36:43
使用int tmp。EOF不能存储在一个字符中,因为它不是一个字符。
发布于 2015-05-09 13:07:54
fgetc()返回有符号整数,但程序将结果存储在一个无符号字符中。当从有符号类型转换为无符号类型时,负数(EOF通常被定义为-1)变为正(在本例中为十进制256 ),因此如果EOF为负值,则返回值与EOF的比较将始终返回false。要修复代码,请将"tmp“的声明从”无符号字符“更改为"int”。
https://stackoverflow.com/questions/30139937
复制相似问题