【精品文献】循环缓冲区#include<>#include<>#include<>#defineBUF_MAX10typedefunsignedlongRMuint32;typedefstructbufer{RMuint32*read_ptr;RMuint32*write_ptr;RMuint32*buf_addr;//循环区的首地址RMuint32buf_size;//循环区的大小}Buffer;Buffercyc_buf;/********************************************************************函数说明:该函数按用户的指定要求的大小创建一个循环缓冲区同时将缓冲区里清空输入参数:buf_size用户指定的缓冲区大小返回值:成功:该缓冲区的首地址失败:NULL********************************************************************/RMuint32*Create_buff(longbuf_size){RMuint32*buf_addr=(RMuint32*)malloc(buf_size*sizeof(RMuint32));if(!buf_addr){printf("ewbuf!\n");returnNULL;}memset(buf_addr,0,buf_size);returnbuf_addr;}/********************************************************************函数说明:该函数从缓冲区里读一个数据出来,存入data中输入参数:buf_add,循环缓冲区结构;data用来存取数据返回值:成功:1失败:0缓冲区已空********************************************************************/intread_from_buf(Buffer*buf_add,RMuint32*data){if(buf_add->read_ptr==buf_add->write_ptr){printf("bufferisempty!Error!\n");return0;}else{*data=*(buf_add->read_ptr);*(buf_add->read_ptr)=0;if((buf_add->read_ptr+1)==buf_add->buf_addr+buf_add->buf_size)buf_add->read_ptr=buf_add->buf_addr;elsebuf_add->read_ptr++;}return1;}/********************************************************************函数说明:该函数向缓冲区里写入一个数据,由data传入输入参数:buf_add,循环缓冲区结构;data用来写入的数据返回值:成功:1失败:0缓冲区已满********************************************************************/intwrite_
【精品文献】循环缓冲区 来自淘豆网m.daumloan.com转载请标明出处.