读书人

用c语言写的读一起源代码

发布时间: 2013-02-19 11:11:40 作者: rapoo

用c语言写的读一行源代码

因为工作需要,用c语言写了一个读一行的函数,供大家参考:

static BOOL readLine(FILE* file, char** ppBuf)    {int   nMax = 128;char  szBuf[128];char* pAmountBuf = NULL ;char* pResult;int   nLen = 0;int   nAmountLen = 0;char* pTmp;BOOL  bLoop = TRUE;do{pResult=fgets(szBuf, nMax, file);/* handle error */if( pResult == NULL && !feof(file) )    {if( pAmountBuf )free( pAmountBuf);return FALSE;    }if( pResult == NULL )    {break;    }else if ( (nLen = strlen( szBuf )) < nMax-1 ||szBuf[nLen-1] == '\n' )     {if( nLen ==0 )break;bLoop = FALSE;    }nAmountLen += nLen;pTmp = (char*)malloc( sizeof(char)* (nAmountLen + 1) );if( pTmp == NULL )    {if( pAmountBuf )free ( pAmountBuf );return FALSE;    }if( pAmountBuf )    {strcpy(pTmp, pAmountBuf );strcat(pTmp, szBuf);    }else    {strcpy(pTmp, szBuf);    }pAmountBuf = pTmp;}while( bLoop );if( nAmountLen!=0 && pAmountBuf[nAmountLen-1] == '\n' )    {pAmountBuf[--nAmountLen]=0;    }if( nAmountLen!=0 && pAmountBuf[nAmountLen-1] == '\r' )    {pAmountBuf[--nAmountLen]=0;    }if( nAmountLen==0 )    {if( pAmountBuf )free( pAmountBuf );    }else*ppBuf=pAmountBuf;return nAmountLen!=0;    }


读书人网 >C语言

热点推荐