我很想知道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
在第二行?
答案 0 :(得分:2)
EOF是-1,因为你可能已经发现了。因此,如果您putc(EOF,stdout)
,则在输出中看到255
,因为-1在打印前会转换为unsigned char
。
答案 1 :(得分:0)
根据cppreference.com上的fputc文档,该字符在内部转换为Button {
id: login
text: qsTr("LOGIN")
Binding {
target: login
property: "background.color"
value: 'red'
when: !login.pressed // Here comes the state
}
}
:
在内部,角色就在之前转换为unsigned char 写作。
如果您现在有一个(可能已签名)字符,并且您指定了unsigned char
,并且char ch = EOF
实际上是EOF
,那么请将-1
转换为(char)-1
} (unsigned char)-1
,然后将其作为255
传回。
答案 2 :(得分:0)
fputc()
,putc()
和putchar()
将写为无符号 char 的字符返回给 int < / em>或EOF
出错。
(强调我的)
EOF
是int
常量,它与任何字符值都不同,因此自然选择可能是-1
(许多实现都使用此方法)。
现在,如果您的char
已签名,则将EOF
转换为char
仍为-1
。但该函数对字符使用 unsigned char ,因此返回255
(这将是解释为 unsigned 的相同值,假设签名值存储在2& #39;补码,char
有8位)。
只需按照记录的方式使用这些功能:传递unsigned char
进行打印(字符常量很好),并将返回值作为int
。如果返回值不是EOF
,那么,则可以将其解释为unsigned char
。