我有一个字符数组缓冲区,用于存储用户将一一输入的字符。我下面的代码可以工作,但有一些我无法弄清楚的小故障:
- 当我执行 printf 来查看 Buffer 中的内容时,它确实填满了,但最后却得到了垃圾字符
- 尽管声明为 char Buffer[8],但它不会停在 8 个字符处;
有人可以向我解释一下发生了什么以及我该如何解决这个问题吗?谢谢。
char Buffer[8]; //holds the byte stream
int i=0;
if (/* user input event has occurred */)
{
Buffer[i] = charInput;
i++;
// Display a response to input
printf("Buffer is %s!\n", Buffer);
}
输出:
tagBuffer is 1┬┬w! tagBuffer is 12┬w! tagBuffer is 123w! tagBuffer is 1234! tagBuffer is 12345! tagBuffer is 123456=! tagBuffer is 1234567! tagBuffer is 12345678!
标签缓冲区是123456789!
最佳答案
您必须以 \0
字符结束字符串。这就是为什么它们被称为零终止字符串。
分配 1 个额外的字符来保存 \0
也是明智之举。
关于c - 末尾带有垃圾字符的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57273995/