|
我在使用I/O输出函数时,发现一个现象。
例如:
while(1)
{
printf("%s\n",buf);
bzero(buf,size);
}
条件是,buf从远端接收到数据,然后在本地打印出来,问题是,我每次都使用bzero将buf清空,那么,为何结果会是:
abcd //第一次是从远端接收到字符串"abcd",结果正常
abc //第二次,接收到的是"abc",看似正常,但是却多出一行空白
ab //第3次,接收的是"ab",第一行是要的结果,但是后面一行,却多出一个'd'
d
a //第4次,收到"a",第1行依然是要的结果,但是后面却多"cd"
cd
然后根据我测试的结果,发现,即使bzero后,下一次打印结果,依然会出现最长一个输出减去本次输出,然后再减1的长度。
我又使用:
{
printf("%s\n",buf);
bzero(buf,size);
printf("%s\n",buf);
}
发现bzero成功将buf清0,但是下次循环到第一个printf时,打印的结果居然还是保留有以前的信息,当然会出现在第2行,第一行是正确输出,但是为什么会有第2行的信息呢,我不是清0了吗? |
|