C 代码仅在 ^Z 之后打印

标签 c

我正在阅读 K&R 关于 C 的书,我读到了这一部分,其中输出将是您输入的换行符数量。我想让它打印出与键入的换行符数量相对应的每个数字:正在读取行。这只在按下 F6 或 CTRL+Z 后输出 nl 的值(EOF)。有人可以向我解释为什么吗?

int main(){


int c, nl = 0;
while ((c = getchar()) != EOF)
    if (c == '\n')
        ++nl;
        printf("%d\n", nl);
}

最佳答案

你忘记了一些括号。以下是您的代码当前执行的操作:

int main(){

    int c, nl = 0;
    while ((c = getchar()) != EOF){
        if (c == '\n'){
            ++nl;
        }
    }
    printf("%d\n", nl);
}

以下是您可能想要根据缩进执行的操作:

int main(){

    int c, nl = 0;
    while ((c = getchar()) != EOF){
        if (c == '\n'){
            ++nl;
            printf("%d\n", nl);
        }
    }
}

在 C 语言中,空格大多被忽略。如果您想在一个 block 中一起运行多个语句,则需要用方括号将该代码括起来 {}

关于C 代码仅在 ^Z 之后打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51811017/

相关文章:

c - outportb和8086汇编中的out指令有明显区别吗?

c - 使用 OpenGL 和 SDL 逐帧动画

c - 披萨代码不起作用 | Cinnamon 上的 C 编程

c - 剥离的二进制文件显示 "_cxa_finalize"而不是 "libc_start_main"

c - 从 C 中的另一个文件获取数组

C、Windows、MinGW(CodeBlocks)代码中创建目录不创建目录

C - 对具有可变长度元素的大二进制文件进行排序

c - 显示分数以及每个分数获得的次数

c - 通过绕道减少非决定论?

c++ - stub 在可执行文件中