打印字符串时出现问题

时间:2010-02-03 19:12:04

标签: c string

我正在编写一个C代码,其中我的长度为2的char数组包含String My 但是使用puts()将其打印到屏幕上。我得到了这个输出

我的£0√“

此类代码的原因是什么?

如果我的数组长度为2,那么如何获得长度为2+的输出???

4 个答案:

答案 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字符一个。

确保你有终止字符。