首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >fgetc()在EOF中不停止

fgetc()在EOF中不停止
EN

Stack Overflow用户
提问于 2015-05-09 12:30:23
回答 3查看 520关注 0票数 3

试图在论坛上寻找,但无法重新分配。

我试着从文本中读出来。案文如下:"To b“

但是在使用fgetc()时,EOF没有到达,最后得到'\n‘,然后得到无穷大'y’样本。

这是我的密码:

代码语言:javascript
运行
复制
Node* getBinTree(FILE *fsrc){
    Node* root=NULL;
    unsigned char tmp=NULL;
    while ((tmp=fgetc(fsrc))!=EOF)
        globalArray[tmp]++;
    return root;

}

非常感谢

EN

回答 3

Stack Overflow用户

发布于 2015-05-09 12:38:09

您遇到的麻烦与fgetc返回的内容有关。返回类型为int,但要将其存储到unsigned char中。

您必须将其更改为int,或者使用feof检查文件结束条件。

票数 4
EN

Stack Overflow用户

发布于 2015-05-09 12:36:43

使用int tmp。EOF不能存储在一个字符中,因为它不是一个字符。

票数 2
EN

Stack Overflow用户

发布于 2015-05-09 13:07:54

fgetc()返回有符号整数,但程序将结果存储在一个无符号字符中。当从有符号类型转换为无符号类型时,负数(EOF通常被定义为-1)变为正(在本例中为十进制256 ),因此如果EOF为负值,则返回值与EOF的比较将始终返回false。要修复代码,请将"tmp“的声明从”无符号字符“更改为"int”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30139937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档