0
我正在實現一個固定長度的緩衝區,分別使用尾部或頭部指針來讀取或寫入字符串。我有以下代碼:實現具有頭部和尾部指針的固定長度緩衝區
bool putBuffer(char *sMsz)
{
int iStrLen;
iStrLen = strlen(sMsz);
if(!iStrLen || iStrLen>MAX_LEN)
return 0;
while(iStrLen-->=0)
{
//if head crosses tail
if(iBufHead==iBufTail && iBufHead!=0 && dFlag)
{
while(cDebugBuf[iBufTail] != '\0')
{
iBufTail=iBufTail+1;
if (iBufTail>=CBUFF_SIZE)
iBufTail = 0;
}
iBufTail++;
}
if(iBufHead>=CBUFF_SIZE)
{
dFlag=1; // Used to know when buffer starts over writing prev data and meets tail on way
iBufHead = 0;
}
cDebugBuf[iBufHead++] = *(sMsz++);
}
return 1;
}
bool getBuffer(char *readData)
{
int i=0;
do
{
if(iBufTail==iBufHead)
return 0;
if(iBufTail>=CBUFF_SIZE)
iBufTail = 0;
readData[i++] = cDebugBuf[iBufTail++];
}while(cDebugBuf[iBufTail]!='\0');
iBufTail++;
return 1;
}
此代碼一直運行,直到最大緩衝區命中,當頭指針再次啓動時,尾指針未正確放置。
改進代碼的任何建議,除了發現錯誤嗎?