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

C语言字符串末尾随机字符问题求助:输入8出现/输入6正常

C语言字符串末尾出现随机字符的原因及解决办法

核心原因就是你怀疑的空字符('\0')问题,C语言里的字符串必须以'\0'作为结束标记,程序输出字符串时会从起始地址一直读取,直到遇到'\0'才停止。

结合你的场景分析:

  • 当输入6个字符时,你的数组有足够空间存放输入内容+'\0',程序能正常识别字符串结束位置,所以输出无乱码。
  • 当输入8个字符时,数组的所有空间被输入的字符占满,没有多余位置存放'\0'。输出时程序会越界读取数组后面的内存内容,直到随机碰到一个'\0',这中间读到的就是你看到的随机字符。

给你几个直接的解决办法:

  • 给字符数组多分配1个字节的空间,比如原本定义char str[8];就改成char str[9];,留足存放'\0'的位置。
  • 限制输入的字符长度,用scanf("%8s", str)代替普通的scanf("%s", str),这样最多读取7个字符,自动给'\0'留位置。
  • 手动添加结束符:如果数组长度足够(至少比最大输入长度多1),输入完成后执行str[strlen(str)] = '\0';,不过更稳妥的是直接按前两种方法处理。

内容的提问来源于stack exchange,提问作者M. Cousins The III

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 17:20:57