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

C语言使用scanf读取字符数组按回车无法提交输入的问题

问题原因解释

你遇到的输入异常完全是scanf格式字符串中额外添加的\n导致的,这是C标准库输入函数的固有行为:

  • C标准规定,scanf格式字符串中的任意空白字符(包括空格、\t制表符、\n换行符),都会指示函数连续跳过输入流中所有的空白字符,直到匹配到第一个非空白字符才会终止当前匹配逻辑
  • 你输入完字符串按下回车时,输入流传入的是\n空白字符,刚好被格式串末尾的\n匹配到,scanf会持续等待后续输入,直到你输入任意非空白字符后才会结束本次读取,这就是你需要二次输入才能提交的原因。
修复方案

直接删除scanf格式串末尾的\n即可,修改后的对应代码行如下:

scanf("%s", name);
额外优化建议
  • 你定义的name数组长度为21,使用%s读取字符串时建议增加长度限制,避免输入过长导致缓冲区溢出,修改为:
    scanf("%20s", name);
    
    这里的%20s表示最多读取20个非空白字符,剩余1个位置留给字符串末尾的结束符\0,符合数组长度要求。
  • 代码中使用的conio.h和getch()是Windows平台特有的非标准库实现,如果后续需要编写跨平台代码,可以替换为标准库的getchar()函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:06:08