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

bs7*_*280 4 c string printf

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

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

输出:

二进制整数:1111000011110000▒▒▒▒

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

pmg*_*pmg 6

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

char binaryNumber[] = "1111000011110000";
// same as
// char binaryNumber[17] = "1111000011110000";
Run Code Online (Sandbox Code Playgroud)


Bha*_*Rao 5

它应该是

char binaryNumber[17] = "1111000011110000";
Run Code Online (Sandbox Code Playgroud)

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

  • 你的字符串文字有 18 个元素:最后两个是相等的(两个 `\0`s) (2认同)