我有一个char数组缓冲区,用于存储用户将要输入的字符。我的以下代码可以运行,但是有一些我无法弄清楚的故障:


当我执行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是1┬┬w!
tagBuffer是12┬w!
tagBuffer是123w!
tagBuffer是1234!
tagBuffer是12345!
tagBuffer是123456 =!
tagBuffer是1234567!
tagBuffer是12345678!

tagBuffer是123456789!

最佳答案

您必须以\ 0字符结束字符串。这就是为什么它们被称为零终止字符串。

分配1个额外的字符来保存\ 0也很明智。

08-06 01:07
查看更多