简介: 我是C编程的初学者,我的导游推荐了C编程语言'作者:Brain W. Kernighan。在阅读本书的过程中,我发现了一个代码并没有像预期的那样工作。
问题:即使在我输入了我想要的文字后,控制台仍在等待更多输入。基本上,控制台无法知道何时开始处理输入。如果有人可以建议对代码进行修改,那么用户可以指示编译器开始处理已提供的输入,这将非常有用。
代码:
#include <stdio.h>
#define IN 1 // inside a word
#define OUT 0 // outside a word
// program to count number of lines, words and characters in input
int main()
{
int c, nl, nw, nc, state;
state = OUT;
nl = nw = nc = 0;
while ((c = getchar()) != EOF)
{
++nc;
if (c == '\n')
++nl;
if (c == ' ' || c == '\n' || c == '\t')
state = OUT;
else if (state == OUT)
{
state = IN;
++nw;
}
}
printf("%d %d %d\n", nl, nw, nc);
}
其他信息:
书:C编程语言 - 作者:Brian W. Kernighan
章:教程简介(页20)
使用Xcode版本8.3.3(8E3004b)
答案 0 :(得分:2)
在类Unix系统上,如果在控制台的一行开头键入CTRL-D,则相当于EOF(while循环中的条件)。如果您使用的是Windows,请改用CTRL-Z。