You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

fgetc读取diff文件返回ASCII码而非字符的问题求助

问题解析与解决

这根本不是bug,是ASCII码的正常对应关系——字符'1'的十进制ASCII值就是49。

你现在用%d作为格式符输出,fprintf会把变量里的数值以十进制整数形式打印,所以显示49很正常。哪怕你把what转成char类型,只要还是用%d输出,依然会显示49,因为格式控制符才决定输出的是整数还是字符,不是变量类型。

要看到字符'1',只需要把输出的格式符改成%c就行:

fprintf(stderr, "%c\n", what);

另外提一句,fgetc返回int是正确的,因为它需要能表示EOF(值为-1),如果用char接收的话,可能会和某些字符的ASCII值冲突,导致无法正确判断文件结束。

内容的提问来源于stack exchange,提问作者eternallymisty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:30:58