goback add

ÓÃcÓïÑÔдµÄ¶ÁÒ»ÐÐÔ´´úÂë

4298 µã»÷¡¤0 »ØÌû
µÆ»ð»¥Áª
Â¥Ö÷
ÒòΪ¹¤×÷ÐèÒª£¬ÓÃ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.atcpu.com
       pAmountBuf[--nAmountLen]=0;  
       }  
   if( nAmountLen==0 )  
       {  
       if( pAmountBuf )  
           free( pAmountBuf );  
       }  
   else  
       *ppBuf=pAmountBuf;  
   return nAmountLen!=0;  
     
   }

ϲ»¶0 ÆÀ·Ö0