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

所以我试图在C中打印出一个字符串,当我打印出来时,我总是在字符串的末尾获得额外的字符。 代码:

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

输出:

二进制整数:1111000011110000▒▒▒▒

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

它应该是

 char binaryNumber[17] = "1111000011110000"; 

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

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

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

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

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

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