#include <stdio.h>
#include <stdlib.h>
#define BUF_CNT 64
char buf[BUF_CNT]={0};
typedef struct
{
char *buffer;
int in;
int out;
int cnt;
int size;
}RING_BUFFER_Typedef;
void ring_buffer_init(RING_BUFFER_Typedef *ring, char *buffer, int len)
{
ring->buffer = buffer;
ring->in = 0;
ring->out = 0;
ring->cnt = 0;
ring->size=len;
}
void ring_buffer_in(RING_BUFFER_Typedef *ring, char c)
{
if(ring->cnt>=ring->size)
{
ring->out++;
if(ring->out==ring->size) ring->out=0;
}
else
{
ring->cnt++;
}
if(ring->in>=ring->size) ring->in=0;
ring->buffer[ring->in] = c;
ring->in++;
}
int ring_buffer_out(RING_BUFFER_Typedef *ring, char *c)
{
if(ring->cnt>0)
{
if(ring->out>=ring->size) ring->out=0;
*c = ring->buffer[ring->out];
ring->out++;
ring->cnt--;
return 0;
}
return -1;
}
int main()
{
RING_BUFFER_Typedef ring;
char i = 0;
char c;
ring_buffer_init(&ring, buf, BUF_CNT);
while(1)
{
for(i=0;i<125;i++)
ring_buffer_in(&ring, i);
for(i=0;i<BUF_CNT;i++)
{
if(ring_buffer_out(&ring, &c)==0)
{
printf("%02x\r\n", c);
}
}
break;
}
}
标签:buffer,char,环回,int,ring,size,out
From: https://www.cnblogs.com/zengfeng1013/p/18060873