1

我用 C 编写了一个程序来计算从标准输入输入的字符。我想使用一个循环来允许多个条目。(注意:我是编程新手。)

main()
{
    long nc;
    int c;
    int kc=1;
    for (kc=1;kc<=5;kc=kc+1)
    {
        nc=0;
        c= getchar();
        while(c != '0')
        {

        ++nc;
        c=getchar();
        }

        printf("%1d\n",nc);

    }
    return 0;
}

所以基本上正如你所猜测的那样,循环接受 5 个条目。

问题:当我输入Sky0第一个结果时,3。但从那时起,计数中增加了一个。即输入dame0导致计数5sit0导致计数4等。

在尝试在各个阶段使用 prinf 调试问题时,我意识到在第一个结果之后,代码找到了输入的结尾,但进入 for 循环 NEVERTHELESS 并使用as0等待下一个条目。这会导致相应输出中的错误。nc1

请告诉我哪里出错了?为什么它在感应后仍进入循环0

非常感谢您的帮助和时间:)

4

1 回答 1

2

问题是当你按下回车键时,它也变成了一个字符(值 0x1a),它是由getcharwhile 循环外的调用返回的。

您可以执行以下操作:

while (getchar() != '\n') nc++;

这样,您甚至不需要使用 0 来标记字符串的结尾。

于 2012-05-24T15:47:24.647 回答