用CFile 打开文件,谁有好办法让文件指针定位到倒数10行的开始位置?

luckyegg 2002-03-27 03:11:54
比如文件共有30行,我想让文件指针定位到20行处,然后开始读文件.就这个意思
...全文
90 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahao 2002-03-27
  • 打赏
  • 举报
回复
呵呵,我想我的方法是比较好的,
如果文件有1G呢,别说不会,有些log文件比这大多了
linux下有个叫tail的工具是做这事的吧,非常有用的工具
我没看代码,不过估计方法差不多
iamknight 2002-03-27
  • 打赏
  • 举报
回复
我觉得你这个问题不是很实用。

能说说你这么做所要解决的问题吗?也话,你那个问题能有一个比你采用这种处理更好的方法。
zhougaomin_007 2002-03-27
  • 打赏
  • 举报
回复
"to iProgram:
hehe,但是文件的总行数我不是已知的呀,要不也就很容易了."

既然如此,ReadString到文件尾,得到行数Count,再ReadString
Count -10 次不就得了
ahao 2002-03-27
  • 打赏
  • 举报
回复
好象文件没有向前读的方法
可以这样吧:
大约分配一块内存,比如1024bytes
读文件最后1024bytes,从后向前找10个'\n'就可以了,不够就再读1024bytes...
in_cloud 2002-03-27
  • 打赏
  • 举报
回复
file.seek
luckyegg 2002-03-27
  • 打赏
  • 举报
回复
to iProgram:
hehe,但是文件的总行数我不是已知的呀,要不也就很容易了.
luckyegg 2002-03-27
  • 打赏
  • 举报
回复
我只好这样了:
CFile pf;
int nlines;
pf.open()
while(fgets()!=NULL){ nlines++} //得到总行数
//这里再将指针移到开始.
if (nlines <10) {
//总行数小于10
}
else //>10
{
while(fgets()!=NULL)
{
i++;
if(i>nlines-10) break;
}
}
//这样就得到了指在倒数10行位置的文件指针
//不过,太烦了吧,谁有好的方法
zhang_qxian 2002-03-27
  • 打赏
  • 举报
回复
我有一个笨办法。
先将文件指针定位到文件最后,然后向前查找\n\r,到你所要求的行数,然后读取文件即可。
iProgram 2002-03-27
  • 打赏
  • 举报
回复
听你说的好像是文本文件,可以用CStdioFile::ReadString读一行,都10次就到了:)

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧