清理c中的char缓冲区

时间:2014-02-23 22:55:59

标签: c buffer

我有下一种情况我有一个循环,用于通过串口从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,但我无法理解。

1 个答案:

答案 0 :(得分:0)

cchar因此您不一定需要清除它,特别是如果您要使用read覆盖它。

if(read(tty_fd,&c,1)>0)

除非write返回的值大于0,否则此行会阻止您的代码执行read函数。这意味着c已被覆盖。