【发布时间】:2021-12-15 00:36:42
【问题描述】:
所以我是按照 Dennis Ritchie 和 Brian Kernighan 所著的“The C Programming Language 2nd Edition”一书来学习 C 的。在1.5.1 File Copying 部分中,显示了以下程序:
#include <stdio.h>
/* copy input to output; 1st version */
main()
{
int c;
c = getchar()
while (c != EOF) {
putchar(c);
c = getchar();
}
}
我在这里有几个问题。
- 为什么变量
c声明为int?因为它是一个getchar()函数,它不应该是char类型吗? -
putchar和printf有什么区别? - 我不明白
while循环条件中提到的EOF是什么
谢谢!
【问题讨论】:
-
初学者假设“字符”是
char(同样,“数字”是int)。几乎每个涉及将字符作为参数或返回字符的 C 库函数都使用int。在getchar()的情况下,我们需要区分数据0xFF和标志EOF(-1)。该标志不是数据,而是没有更多输入的信号(文件结束)。另外,如果您查看sizeof 'a',您会发现它不是1,而是与sizeof (int)相同。 -
对了,那个变量被声明为
int,这样就可以检查它是否等于EOF,而EOF是-1 -
是的,函数声明是
intgetchar(void); -
哦,好的,谢谢!
标签: c getchar kernighan-and-ritchie putchar