用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; }