我是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并且不允许任何用户输入感到困惑。
答案 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"
,然后将其打开。
仅此而已:)