【发布时间】:2016-09-14 18:46:25
【问题描述】:
在下面的例子中,来自《C编程》一书,当输入字符时,程序会计数两次。
main(){
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);
}
输出:
a
b
c
d
e
f
12
怎么了?
我正在使用 Ubuntu 和 gcc 编译器。
【问题讨论】:
-
main()是一个已弃用的签名。永远不要使用它!在此处使用原型样式签名:int main(void)。学习现代 C(即 C99)。 -
从技术上讲,这个程序也被破坏了,因为它在
main的末尾缺少一个return 0。从 C99 开始,您需要明确的int main,但return是可选的。 :-) -
输出正确。使用该输入创建一个文件并将其通过管道传输到您的程序。然后比较文件长度和输出。您可能还想在文件上使用十六进制编辑器来查看发生了什么。