C Scanf命令无法运行

时间:2019-12-27 00:12:37

标签: c printf scanf

我是C语言的新手。我试图弄清楚如何使用scanf。到目前为止,这是我的代码。

#include <stdio.h>
#include <string.h>

int main() {
    char lastInitial;
    printf("What is your last inital?");
    scanf(" %c", &lastInitial);
}

当我运行此代码(我正在使用VS Code)时,它表明文件正在运行,但是什么也没有显示。当我回到顶部再次单击运行按钮时,它表示此代码已在运行。如果我停止运行,请删除scanf行并再次运行,该文件将运行并显示“您的最后一个字母是什么?”我对为什么将scanf添加到文件中会停止printf并且不允许任何用户输入感到困惑。

2 个答案:

答案 0 :(得分:3)

您可能对printf的工作方式有些复杂。运行printf("What is your last inital?");时,此文本不以换行符(\n)结束。结果,某些环境可能不会立即显示它,从而延迟了它,直到您printf整行或程序结束为止。这样做是为了提高效率,因为实际将输出输出到屏幕的内部步骤有些昂贵。

当您删除scanf时,程序在printf之后立即结束;当程序结束时,C标准库中的内置关闭例程将所有仍在等待显示的文本发送到屏幕。但是,当包含scanf时,文本将被缓冲/延迟,并且永远不会发送到屏幕正弦,程序会停滞等待用户输入。您可以强制使用换行符立即发送输出:

#include <stdio.h>
#include <string.h>

int main() {
    char lastInitial;
    printf("What is your last inital?\n");
    scanf(" %c", &lastInitial);
}

或者,如果您不需要换行符,可以告诉C标准库立即显式发送所有输出文本:

#include <stdio.h>
#include <string.h>

int main() {
    char lastInitial;
    printf("What is your last inital?");
    fflush(stdout);
    scanf(" %c", &lastInitial);
}

答案 1 :(得分:1)

我知道答案!!!

运行程序时,应从“输出”切换到“终端”。 您需要安装“代码运行器”扩展程序。

然后转到File-->Preferences-->Settings-->in进行搜索,写上" code runner",下面将显示一些代码运行程序设置,您需要找到"Run In Terminal",然后将其打开。

仅此而已:)