用c语言写的读一行源代码
因为工作需要,用c语言写了一个读一行的函数,供大家参考:[cpp]
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' )
{ www.zzzyk.com
pAmountBuf[--nAmountLen]=0;
}
if( nAmountLen==0 )
{
if( pAmountBuf )
free( pAmountBuf );
}
else
*ppBuf=pAmountBuf;
return nAmountLen!=0;
}
补充:软件开发 , C语言 ,