C - scanf 导致我的代码永远运行



我试图使用scanf但是当我运行代码时,代码会永远持续下去。当我停止代码时,我得到

[完成] 在 28.291 秒内以 code=1 退出

我的问题是我做错了什么?这是我尝试执行的代码。我的编辑器是VS代码1.21.0。

#include <stdio.h>
#include <string.h>
int main(){
    char midInitial;
    printf("What is your middle initial? ");
    scanf(" %c", &midInitial);
    printf("Middle inital &c ", midInitial);
}

代码不会永远运行,它会等待用户完成输入。标准输入是行缓冲的,因此用户必须在字符后键入 enter,scanf()才能处理它。它将跳过任何空格字符,将第一个非空格字符存储到midInitial中并返回1

另一种可能的解释是您使用的环境不支持控制台输入。从 Windows 中的 shell 解释器窗口运行程序。

还有一个问题:格式"Middle inital &c "不正确,使用%作为转换说明符。

这是更正后的版本:

#include <stdio.h>
int main() {
    char midInitial;
    printf("What is your middle initial? ");
    if (scanf(" %c", &midInitial) == 1) {
        printf("Middle initial: %cn", midInitial);
    }
    return 0;
}

转到代码运行程序扩展设置并确保<代码运行程序:在终端中运行>checked

int main(({ char midInitial;

printf("你的中间名首字母是什么?"(;

scanf(" %c", &midInitial(;

printf("中间首字母 %c ", 中间首字母(; (请参阅它应该是 %c(}

最新更新