修改C代码以处理提供的输入

时间:2017-07-20 19:36:48

标签: c

简介: 我是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)

1 个答案:

答案 0 :(得分:2)

在类Unix系统上,如果在控制台的一行开头键入CTRL-D,则相当于EOF(while循环中的条件)。如果您使用的是Windows,请改用CTRL-Z。