我正在尝试创建一个在输入\ n后计算行数的程序。我究竟做错了什么?

时间:2016-08-02 17:49:11

标签: c

我正在通过Kernighan& amp; Ritchie书,并改编了他们的代码以创建我自己的程序。只有在输入一个字符三行输出后才能得到。前两行表示行数为0,然后行数为1.我显然宁可直接输入一行。我做错了什么?

int main()
{
    int stor, lines;
    lines = 0;
    while((stor = getchar()) != EOF){
        if(stor == '\n')
            ++lines;;
         printf("Amount of lines:%d\n", lines);
}
return 0;

2 个答案:

答案 0 :(得分:2)

您打印出while循环内部的行数,该循环运行您输入的每个字符。因此,对于您按下的每个键,您将得到一行输出。

printf移到while循环体后面,它最后只打印一次。

#include <stdio.h>

int main()
{
    int stor, lines;
    lines = 0;
    while((stor = getchar()) != EOF) {
       if(stor == '\n')
            ++lines;
    }
    printf("Amount of lines:%d\n", lines);
    return 0;
}

答案 1 :(得分:0)

在这里,您尝试计算输入中新行字符\n的总数。

为此,只有在完成输入处理后才需要打印\n的总数。因此,您需要将printf移到while循环之外。

int main()
{
    int stor, lines;
    lines = 0;
    while((stor = getchar()) != EOF) {
    if(stor == '\n')
        ++lines;

    /* Move the below printf outside the while loop */
    /* printf("Amount of lines:%d\n", lines); */
    }

    printf("Amount of lines:%d\n", lines);
    return 0;
}