#include #define MAX_NBR_ELEM 5 #define MAX_NBR_CHAR 9 char ringbuffer[MAX_NBR_ELEM][MAX_NBR_CHAR]; //char matrix with size for 10char strings int nextToPut=0; int nextToGet=0; int nbrOfElements=0; int isFull=0; void put(char* c){ int i=0; printf("nextToPut: %d\n",nextToPut); if(++nextToPut>=MAX_NBR_ELEM){ nextToPut=0; } while(i<9){ ringbuffer[nextToPut][i]=c[i]; i++; } printf("string copied\n"); // nextToPut++; nbrOfElements++; if(nbrOfElements==MAX_NBR_ELEM){ isFull=1; } } char* get(void){ if(++nextToGet>=MAX_NBR_ELEM){ nextToGet=0; } if((ringbuffer[nextToGet]!=NULL)){ nextToGet++; // nextToPut--; nbrOfElements--; isFull=0; return ringbuffer[nextToGet-1]; } else{ return NULL; } } int main(){ char* pChar; char* myString0="hello0"; char* myString1="hello1"; char* myString2="hello2"; char* myString3="hello3"; char* myString4="hello4"; char* myString5="hello5"; char* myString6="hello6"; char* myString7="hello7"; put(myString0); put(myString1); put(myString2); put(myString3); put(myString4); put(myString5); put(myString6); put(myString7); printf("nbrOfElements: %d\n",nbrOfElements); pChar=get(); printf("fetched from buffer: %s\n",pChar); pChar=get(); printf("fetched from buffer: %s\n",pChar); pChar=get(); printf("fetched from buffer: %s\n",pChar); pChar=get(); printf("fetched from buffer: %s\n",pChar); pChar=get(); printf("fetched from buffer: %s\n",pChar); pChar=get(); printf("fetched from buffer: %s\n",pChar); pChar=get(); printf("fetched from buffer: %s\n",pChar); pChar=get(); printf("fetched from buffer: %s\n",pChar); printf("nbrOfElements: %d\n",nbrOfElements); } OUTPUT: bkw@sandbox:~/code/buffertest$ ./a.out nextToPut: 0 string copied nextToPut: 1 string copied nextToPut: 2 string copied nextToPut: 3 string copied nextToPut: 4 string copied nextToPut: 0 string copied nextToPut: 1 string copied nextToPut: 2 string copied nbrOfElements: 8 fetched from buffer: hello5 fetched from buffer: hello7 fetched from buffer: hello4 fetched from buffer: hello6 fetched from buffer: hello3 fetched from buffer: hello4 fetched from buffer: hello6 fetched from buffer: hello3 nbrOfElements: 0