tak czy siak musisz zadeklarowac miejsce dla tego bufora - statycznie tablica, lub dynamicznie - malloc().
zalozmy ze statycznie:
na poczatku deklaracja:
Code: char bufor[5];
char *buf_in,*buf_out;
potem setup:
Code: buf_in=bufor;
buf_out=bufor;
teraz sprawe mozna rozwiazac dwojako, zwykle tworzy sie dedykowane funkcje zapisu i odczytu do bufora:
Code: void FIFO_write(char data)
{
*buf_in++=data;
if((int)buf_in>(int)&bufor[4])
buf_in=bufor;
}
Code: char FIFO_read(void)
{
char data;
data=*buf_out++;
if((int)buf_out>(int)&bufor[4])
buf_out=bufor;
return data;
}
to jest super prosta wersja. mozna ja rozbudowac o kontrole stanu zapelnienia i wyczerpania bufora. zasadniczo, nalezy sprawdzac czy przypadkiem po powiekszeniu (i ewentualnym przewinieciu na poczatek) wskaznika nie bedzie on rowny drugiemu wskaznikowi, co oznaczaloby, ze bufor jest calkowicie zapelniony. sprawe calkowitego wyczerpania bufora realizuje sie podobnie - jesli obydwa wskazniki sa sobie rowne, oznacza to, ze bufor jest calkowicie pusty.
4\/3!!