设为首页 加入收藏

TOP

用c语言写的读一行源代码
2014-11-23 23:18:07 来源: 作者: 【 】 浏览:1
Tags:语言 一行 源代码
因为工作需要,用 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.2cto.com
pAmountBuf[--nAmountLen]=0;
}
if( nAmountLen==0 )
{
if( pAmountBuf )
free( pAmountBuf );
}
else
*ppBuf=pAmountBuf;
return nAmountLen!=0;
}
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言中宏定义#define用法总结 下一篇关于C语言中对数组取址的问题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: