我不确定在与
unsigned char
系列函数的返回进行比较之前是否必须将角色转换为 getc
。
这是没有演员表的示例:
#include <stdio.h>
int main(void) {
int c;
while ((c = getchar()) != '\n' && c != EOF) // loop until newline or EOF
putchar(c);
return 0;
}
这是一个演员阵容的例子:
#include <stdio.h>
int main(void) {
int c;
while ((c = getchar()) != (unsigned char)'\n' && c != EOF) // loop until newline or EOF
putchar(c);
return 0;
}
在我使用的实现上,两者都有效。
便携式节目需要演员阵容吗?
我相信是的,因为C11/N1570 7.21.7.1p2,强调我的:
如果流指向的输入流的文件结束指示符未设置并且存在下一个字符,则 fgetc 函数以转换为 int 的无符号字符形式获取该字符,并前进相关的文件位置指示符对于流(如果已定义)。
'\n'
为always 正数)不需要强制转换。
'\n'
在 C 语言中是
int
getchar()
返回
int
c
是
int
int
转换为
int
,因此您的第一个循环就是它应该看起来的样子。选择
EOF
,使其不可能与转换为
char
的
unsigned char
发生冲突。它最常见的值是
-1
。