You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用scanf导致程序无限运行,退出码为1,求问题排查(附代码)

解决scanf使用时的无限循环与程序异常退出问题

嘿,我来帮你排查这个问题!你遇到的程序无限循环和异常退出(代码1),主要是代码里的两个小问题导致的,咱们一步步拆解:

问题1:printf格式符拼写错误

你代码里的最后一行printf写错了格式符:

printf("Middle inital &c ", midInitial);

这里的&c是明显的拼写错误,正确的字符格式符应该是%c。用错格式符会触发未定义行为——程序可能输出乱码,甚至出现奇怪的循环或崩溃,这也是你看到异常退出的核心原因之一。

问题2:main函数缺少规范的返回语句(可选但建议补充)

虽然C标准允许main函数无return语句时默认返回0,但在部分编译环境下,这可能导致程序退出状态异常。加上return 0;能让代码更规范,避免不必要的运行问题。

修复后的完整代码

#include <stdio.h>
#include <string.h>
int main(){
    char midInitial;
    printf("What is your middle initial? ");
    scanf(" %c", &midInitial); // 这里的空格是正确的,用来跳过输入前的空白字符(比如回车)
    printf("Middle initial %c ", midInitial);
    return 0; // 补充规范的返回语句
}

额外说明

如果修复后仍出现类似“卡住”的情况,大概率是输入操作的问题——比如你输入了多个字符后回车,但你的scanf写法" %c"已经处理了空白字符,只要输入单个字母(比如J)然后回车,程序就能正常执行并退出。

内容的提问来源于stack exchange,提问作者Chris_Nk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:34:50