当前位置:编程学习 > C/C++ >>

用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语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,