打印字符串时出现问题

Mah*_*pta 1 c string

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

我的£■0√"

这样的代码是什么原因???

如果我的数组长度为2,那我怎样才能获得长度为2+的输出?

pm1*_*100 6

听起来你错过了null终结符 - 字符串需要是三个字符"m","y","\ 0"

  • @Mew 3.2 - `char tmpBuffer [3] ="我的"; strcmp(tmpBuffer,"My")== 0;`产生正确的结果.C字符串("任何东西"`)自动包含一个nul-terminator. (2认同)

Jer*_*fin 5

如果你已经明确地将字符串的长度设置为2,那么你就不会为NUL终结符留出空间,这是puts用于查找字符串结尾的内容.由于你没有,它会继续按照你定义的字符串打印出内存的内容,直到它到达内存中恰好包含0的字节.

为了避免这种情况,一般应指定,当你创建一个字符串的长度:

char string[2] = "My"; // avoid this
char string2[] = "My"; // use this instead.
Run Code Online (Sandbox Code Playgroud)