在c中添加到字符串末尾的额外字符

时间:2014-12-08 18:39:34

标签: c string printf

所以我试图在C中打印出一个字符串,当我打印出来时,我总是在字符串的末尾添加额外的字符。 守则:

char binaryNumber[16] = "1111000011110000";
printf("binary integer: %s\n", binaryNumber);

输出:

  

二进制整数:1111000011110000▒▒▒▒

你可以帮我弄清楚为什么会这样。我认为这是我的代码中其他一些问题的根源。在我以更复杂的方式创建字符串之前我遇到了这个问题,并且在这种情况下也获得了额外的字符,但它们是不同的。所以我用最基本的方式制作了一个字符串(这里显示的方法),我仍然遇到问题

3 个答案:

答案 0 :(得分:6)

让编译器确定所需的元素数量

char binaryNumber[] = "1111000011110000";
// same as
// char binaryNumber[17] = "1111000011110000";

答案 1 :(得分:4)

应该是

char binaryNumber[17] = "1111000011110000";

这是因为C中的字符串以空值终止。因此,如果您没有为将要添加的隐式\0提供额外的字符空间,那么您将阅读垃圾

答案 2 :(得分:3)

阵列中有16个字符。并且没有地方可以容纳\0个字符。

%s打印字符串,直到遇到\0

所以你看到的是打印出来的一些垃圾字符。请让你的字符串\0终止