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
相关产品推荐
相关产品推荐

