【发布时间】:2011-11-29 05:19:20
【问题描述】:
OSX 10.6.8、GCC 4.2 86_64
#include <stdio.h>
/* count lines in input */
main()
{
int c, nl;
nl = 0;
while ((c = getchar()) != EOF)
if (c == '\n')
++nl;
printf("%d\n", nl);
}
运行
./a.out
按ctrl+d发送EOF
0D
它应该只是0。为什么要附加D?什么意思?
【问题讨论】:
-
如果您按 ctrl+D,那么听起来 D 来自终端...例如它与 printf (或代码?)无关。如果您尝试使用
more或less会发生什么?如果将输入通过管道输入到程序中会怎样? -
每次您将带有 CTR D 的 EOF 发送到任何程序或仅发送到此测试时,都会发生这种情况吗?我认为除了
0之外的D只是来自上面的组合键。 -
我在 linux 机器上运行时得到 0
-
@pst 不,D 不是来自那个 - ctrl+D 是发送 EOF 的快捷方式