在 C 中使用 scanf 进行用户输入时出错

问题描述 投票:0回答:1

我正在尝试制作一个需要整数作为用户输入的脚本。

printf("What is your guess?\n--> ");
    int guess;
    scanf("%d", &guess);

但是当我尝试在 vscode 中使用 gcc 运行并编译它时,代码不会停止运行,也不会输出任何内容。当我使用 ctrl+c 时,它显示 code=null。

当我通过终端执行此操作时,它工作得很好。

我做错了什么?

我看过其他文章,但似乎没有帮助。

c visual-studio-code user-input
1个回答
0
投票

从绑定到终端的

stdout
读取数据后,您的环境不会刷新
stdin
。 您应该手动刷新输出:

#include <stdio.h>

int main(void) {

    for (;;) {
        printf("What is your guess?\n--> ");
        fflush(stdout);
        int guess;
        if (scanf("%d", &guess) != 1) {
            printf("missing or invalid input\n");
            return 1;
        }
        if (guess == 42) {
            printf("you win!\n");
            return 0;
        }
        if (guess < 42) {
            printf("too small! try again\n");
        } else {
            printf("too large! try again\n");
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.