不用指针,来实现一个固定大小的FIFO缓冲区
struct KEYBUF
{
unsigned char data[32];
int next_r; //下一个数据读取位置 即队首
int next_w; //下一个数据写入位置 即队尾
int len; //len表示缓冲区已记录的字节数
}
struct KEYBUF keybuf;
// 写入数据
if (keybuf.len < 32)
{
keybuf.data[keybuf.next_w] = data;
keybuf.len++;
keybuf.next_w++;
if (keybuf.next_w == 32)
{
keybuf.next_w = 0; //循环使用缓冲区
}
}
//读取数据
unsigned char i = keybuf.data[keybuf.next_r];
keybuf.len--;
keybuf.next_r++;
if (keybuf.next_r == 32)
{
keybuf.next_r = 0;
}