我正在编写一个C代码,其中我的长度为2的char数组包含String My 但是使用puts()将其打印到屏幕上。我得到了这个输出
我的£0√“
此类代码的原因是什么?
如果我的数组长度为2,那么如何获得长度为2+的输出???
答案 0 :(得分:6)
听起来你错过了空终结符 - 字符串必须是三个字符“m”,“y”,“\ 0”
答案 1 :(得分:5)
如果你已经明确地将字符串的长度设置为2,那么你就不会为NUL终结符留出空间,这是puts
用来查找字符串结尾的内容。由于你没有,它会继续按照你定义的字符串打印出内存的内容,直到它到达内存中恰好包含0的字节。
为避免这种情况,通常在创建字符串文字时不指定长度:
char string[2] = "My"; // avoid this
char string2[] = "My"; // use this instead.
答案 2 :(得分:2)
自从我做了C.已经有一段时间了。但是我怀疑你的角色数组不会以空字符结尾。因此,您需要使用'\ 0'
结束数组答案 3 :(得分:1)
您的数组长度应至少为3,每个字符一个,\ 0字符一个。
确保你有终止字符。