因为工作需要,用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;	    }