所以我试图在C中打印出一个字符串,当我打印出来时,我总是在字符串的末尾添加额外的字符。 守则:
char binaryNumber[16] = "1111000011110000";
printf("binary integer: %s\n", binaryNumber);
输出:
你可以帮我弄清楚为什么会这样。我认为这是我的代码中其他一些问题的根源。在我以更复杂的方式创建字符串之前我遇到了这个问题,并且在这种情况下也获得了额外的字符,但它们是不同的。所以我用最基本的方式制作了一个字符串(这里显示的方法),我仍然遇到问题二进制整数:1111000011110000▒▒▒▒
答案 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
终止