我有下一个情况我有一个循环从串口读取gprs中的数据,并且这个数据存储在名为c的char缓冲区中,但是在我需要清理缓冲区之前只打印来自我的gprs而不是之前发送的命令。 我的代码:在c中清理char缓冲区
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但我无法弄清楚。
在读入缓冲区之前,您不需要清除缓冲区。 'read()'会覆盖所有内容。 – Barmar
“fflush”的参数应该是像stdout这样的流,而不是缓冲区地址。 – Barmar