gpt4 book ai didi

C Scanf 命令无法运行

转载 作者:行者123 更新时间:2023-12-02 19:44:48 27 4
gpt4 key购买 nike

我是 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 并且不允许任何用户输入。

最佳答案

您可能对 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);
}

关于C Scanf 命令无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59494686/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com