当前位置: 代码迷 >> C语言 >> 用c语言写的读一起源代码
  详细解决方案

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

热度:7764   发布时间:2013-02-26 00:00:00.0
用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;	    }


  相关解决方案