我试图使用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(}