【问题标题】:Certain C code not displaying output in VS Code某些 C 代码未在 VS Code 中显示输出
【发布时间】:2022-01-03 12:28:23
【问题描述】:

所以基本上,我有这个简单的 Hello World 程序,当执行时,它会正确输出。

#include <stdio.h>

int main(){
    printf("Hello");
}
Output: Hello

但由于某种原因,添加 scanf 命令会导致程序不输出任何内容。它会显示它正在运行,但不会显示任何内容。

#include <stdio.h>

int num1;

int main(){
    printf("Enter number: \n");
    scanf("%d", &num1);
    printf("%d", num1);
}

输出:

[Running] cd "d:\programming\" && gcc main.c -o main && "d:\programming\"main

我知道我的代码没问题,因为我在其他 IDE 上尝试过它并且它工作正常。我什至从互联网上复制代码并尝试在 VSCode 中运行,但仍然无法正常工作。它昨天仍然可以正常工作,但是这个问题无处不在。

我使用带有 C/C++、C/C++ 编译运行和 Code Runner 扩展的 Visual Studio Code 1.62.3。

【问题讨论】:

    标签: c visual-studio-code


    【解决方案1】:

    这是一个缓冲问题。当标准输出(stdoutprintf 写入)连接到实际终端时,它是 line-buffered,这意味着当有换行符时,输出实际上被写入终端。

    然而,VSCode 可能使用自己的终端仿真并使用 管道stdout 连接到该终端。这意味着输出将被完全缓冲,您需要显式刷新它。

    所以修改代码如下:

    printf("Enter number: \n");
    fflush(stdout);  // Actually write the output to standard output
    scanf("%d", &num1);
    printf("%d", num1);
    

    它适用于第一个示例是因为随后进程终止,并且所有输出都会自动刷新。

    【讨论】:

    • 成功了,谢谢! @Some 程序员老兄虽然我之前没有包含这个fflush(stdout);,但它仍然有效。由于某种原因,这个问题刚刚出现。我只需要插入一次吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多