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

标签 c

<分区>

我正在通过 Kernighan & Ritchie 的书学习 C 编程,并稍微调整了他们的代码来创建我自己的程序。只有我在输入一个字符后得到三行输出。前两行表示行数为 0,然后行数为 1。我显然宁愿输入直接转到 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;

最佳答案

您打印出 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;
}

关于c - 我正在尝试创建一个在输入\n 后计算行数的程序。我究竟做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38727264/

相关文章:

c++ - 关于缺少 header 的编译错误

c - 如何在configure.ac中使用宏__GNUC__和__GNUC_MINOR__

c - 编写我的第一个 C 程序,我无法克服这个愚蠢的错误

c - 如何从共享内存中分离字符串数组? C

c - 如何在循环中声明分配的数组?

c - free() 是否进行碎片整理?

c - 假位法达到最大迭代次数限制

php - 与标量变量相反

c printf函数动态类型确定

c - C语言中的Blowfish加密函数(BF_encrypt)