我有下一种情况我有一个循环,用于通过串口从gprs读取数据,这个数据存储在一个名为c的char缓冲区中,但在我需要清理缓冲区之前只打印来自我的gprs的repond而不是先前发送的命令。 我的代码:
while(ciclo)
{
c=data[i];
i++;
if(c != '\0')
{
write(tty_fd,&c,1);
}
else
{
ciclo = false;
}
}
ciclo = true;
//int veces = 0;
//here I need clean c var
while(ciclo)
{
nanosleep((struct timespec[]){{0, INTERVAL_MS}}, NULL);
//veces++;
//printf("durmio 0,5 por %i vez \n",veces);
fflush(&c);
if(read(tty_fd,&c,1)>0)
{
write(STDOUT_FILENO,&c,1);
//append(respuesta,c);
//printf("respuesta %s",respuesta);
}
else
{
ciclo = false;
}
}
我尝试了fflush和fpurge,但我无法理解。
答案 0 :(得分:0)
c
是char
因此您不一定需要清除它,特别是如果您要使用read
覆盖它。
if(read(tty_fd,&c,1)>0)
除非write
返回的值大于0,否则此行会阻止您的代码执行read
函数。这意味着c
已被覆盖。