【发布时间】:2017-12-24 15:54:54
【问题描述】:
我很想知道putc() 会返回什么。我正在通过以下链接:https://www.tutorialspoint.com/c_standard_library/c_function_putc.htm。现在如果putc() 在错误时返回EOF,那么一个自然的问题是它在文件末尾返回什么?为此,我在 dev c++ 中编写了以下内容:
代码
#include <stdio.h>
int main() {
char ch = EOF;
printf("%d\n", putc(ch, stdout));
printf("hello %d", EOF);
return 0;
}
输出
255
hello -1
这有点奇怪。谁能帮我吗 ? EOF 不是 What is the ascii value of EOF in c.? 中所述的 ASCII 字符,那么为什么第一行是 255(是的,它不是 ASCII)而第二行是 -1?
【问题讨论】:
-
char ch=EOF;EOF 在char中可能无法表示。这是一些int常量。 -
好的,我明白这就是为什么 putc() 的返回类型是 unsigned char ...。但是为什么有 2 个不同的值仍然是一个问题。
-
返回类型为
int。 此函数在出错时将写入为 unsigned char 转换为 int 或 EOF 的字符返回。EOF具有值-1,这不能是unsigned char转换为int。 -
putc的返回值是int类型。你在哪里看到是unsigned char? -
如果您真的想尝试 C 标准库,请认真考虑使用 C 编译器。
标签: c ascii eof non-ascii-characters stdio