在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
终止