cq.c

来自「C语言源代码及相关资料」· C语言 代码 · 共 82 行

C
82
字号
#include "cq.h"int		CQ_len ( CQ * pQ ){int	len = 0;	if ( pQ->rd <= pQ->wt )		len = pQ->wt - pQ->rd;	else		len = pQ->wt - pQ->rd + pQ->size;	return len;}int		CQ_space ( CQ * pQ ){int	len = 0;	if ( pQ->wt < pQ->rd )		len = pQ->rd - 1 - pQ->wt;	else		len = pQ->rd - 1 - pQ->wt + pQ->size;	return len;}int		CQ_write_in ( CQ * pQ, unsigned char * pbuf, int nSize ){int		wt = pQ->wt;int		rd = pQ->rd;int		n  = pQ->size;unsignedchar *	q  = pQ->data;unsignedchar *	p  = pbuf;	if ( p == 0 ) return 0;	if ( q == 0 ) return 0;	while ( rd <= wt )	{		if ( wt + 1 >= n  && rd == 0 ) break;		q[ wt++ ] = *p++;		if ( wt >= n ) wt = 0;		if ( --nSize <= 0 ) break;	}	while ( wt < rd - 1 )	{		q[ wt++ ] = *p++;	//	if ( wt >= n ) wt = 0;		if ( --nSize <= 0 ) break;	}	pQ->wt = wt;	return (int)(p - pbuf);}int		CQ_read_out ( CQ * pQ, unsigned char * pbuf, int nSize ){int		wt = pQ->wt;int		rd = pQ->rd;int		n  = pQ->size;unsignedchar *	q  = pQ->data;unsignedchar *	p  = pbuf;	if ( p == 0 ) return 0;	if ( q == 0 ) return 0;	while ( rd != wt )	{		*p++ = q[ rd++ ];		if ( rd >= n ) rd = 0;		if ( --nSize <= 0 ) break;	}	pQ->rd = rd;	return (int)(p - pbuf);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?