Chinaunix

标题: fgets 从第N行开始读如何写? [打印本页]

作者: wkl    时间: 2008-10-07 13:38
标题: fgets 从第N行开始读如何写?
一个文件,我想从第12行开始读,我还不想用循环一点一点读到这行,而是想一下把文件读取指针一下放到第12行,这样我一fgets就直接读12行了.
各位大大, 有办法吗?
作者: 5毛党党员    时间: 2008-10-07 13:42
如果每一行都是定长的,可以用fseek

如果不是就只能一行一行读了
作者: net_robber    时间: 2008-10-07 13:42
第12行是人类的逻辑概念,机器没有这个概念,因此,你只能一行一行的掠过


或者如果你使用高级语言,比如Shell,会有一些书写上比较简单的方法
作者: wkl    时间: 2008-10-07 14:21
O,谢谢大家
作者: 312-pirl0    时间: 2008-10-07 16:59
其实fseek实现的很局限,对你的文件有定长的要求,所以对程序的健壮性是没有帮助的,12的循环不是个问题。
作者: ssafa    时间: 2008-10-07 17:22
对于普通的文档,直接读取到第12个换行符就可以了
作者: CUDev    时间: 2008-10-07 21:54
标题: 回复 #1 wkl 的帖子
先for一下读取11行,不做任何处理。
作者: honey709    时间: 2008-10-07 23:03
对的

牛xxxx
作者: scutan    时间: 2008-10-07 23:18
看这个贴子。
http://www.chinaunix.net/index.p ... read.php?tid=920810
作者: spiritX    时间: 2008-10-08 08:40
原帖由 net_robber 于 2008-10-7 13:42 发表
第12行是人类的逻辑概念,机器没有这个概念,因此,你只能一行一行的掠过



这个分析很有道理.
作者: 思一克    时间: 2008-10-08 09:00
看你的程序具体情况.

如果2年读一行,那么就从头扫描到要读行取出内容.
如果1秒读多次不同的行, 那么就建立一个行位置的表, 然后直接从表中找到起始位置再读. 编辑器就是这样.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2