使用大小为1和strcat的char数组发出问题

tgh*_*tgh 1 c++ arrays char

好吧,我真的对VS2008中的这种行为感到困惑.

这段代码..

char data[512] = "";

char c[1] = "";
c[0] = '1';

strcat(data, c);
Run Code Online (Sandbox Code Playgroud)

..导致data被设置为此字符串值:1ÌÌÌÌhÿ

当然应该只是1

我怎样才能确保data只包含我复制到其中的单个char [](即1)?

为什么要strcat()复制所有垃圾?为什么c甚至包含那些垃圾?

谢谢你的帮助

编辑:谢谢大家.

Jar*_*Par 12

这里的问题是您将无效值传递给strcat.它期望第二个参数是有效的c字符串值.要有效,它必须是char值的数组/指针,以null终止符(\0)结尾.传递的值不包含空终止符,因此无效.

您需要为字符串值定义空终止符c才有效.例如

char c[2];
c[0] = '1';
c[1] = '\0';
Run Code Online (Sandbox Code Playgroud)