K&R提供了以下关于 getchar()
的示例:
int getchar(void)
{
char c;
return (read(0, &c, 1) == 1) ? (unsigned char) c : EOF;
}
在这里将 c 转换为 unsigned char 是为了避免符号扩展问题,但在
fputs()
示例中...int fputs(char *s, FILE *iop)
{
int c;
while (c = *s++)
putc(c, iop);
return ferror(iop) ? EOF : 0;
}
为什么这次转换无需进行强制类型转换,即可将*s
分配给int
,而不是先转换为unsigned char
?
fputs
而不是fputc
?书中没有给出fputc
的示例。 - Derekfputs
在这方面与getchar
无法进行有意义的比较,因为它们的返回值规范完全不同。 - AnT stands with Russia