我正在编写一个简单的代码来将文件内容打印到stdout。
当我使用它时:
while((c=fgetc(fp))!=EOF)putchar(c);
它的工作方式应该如此,但我想合并putchar
和fgetc
。所以我写了
while(putchar(fgetc(fp))!=EOF);
但它似乎不起作用。所以我检查putchar
RETURN VALUE
fputc(), putc() and putchar() return the character written as an
unsigned char cast to an int or EOF on error.
那为什么它不起作用?
答案 0 :(得分:1)
getchar
返回以下内容之一:
unsigned char
值(例如,通常在0到255之间,包括这些值),转换为int
。因此,通常有256个(UCHAR_MAX+1
,技术上)值中的一个属于此类别。EOF
,具有负值,通常为-1。因此,getchar
通常可以返回 257 (非256)值中的一个。如果您尝试将该值直接转换为char
或unsigned char
(例如通过致电putchar
),则您将丢失EOF
信息。
出于这个原因,您需要将getchar
的返回值存储到int
之前,然后将其转换为unsigned char
或char