Because of work requirements, I wrote a function to read a row in C language for your reference: [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, pAmoun TBuf); 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.2cto.com pAmountBuf [-- nAmountLen] = 0;} if (nAmountLen = 0) {if (pAmountBuf) free (pAmountBuf);} else * ppBuf = pAmountBuf; return nAmountLen! = 0 ;}