社区
C语言
帖子详情
跳过文本文件前n行,哪种效率高?
cy010510630
2010-02-24 01:37:21
用fgetc一个一个字符读取,判断回车数,知道等于n。然后ftell。
用fgets直接读取一行。读n次。
只是为了跳过前n行而已,
所以前几行具体是什么字符无关紧要
。
此情况下,哪种方法效率高?
比如有10万行,哪种方法效率高?
...全文
243
6
打赏
收藏
跳过文本文件前n行,哪种效率高?
用fgetc一个一个字符读取,判断回车数,知道等于n。然后ftell。 用fgets直接读取一行。读n次。 只是为了跳过前n行而已,所以前几行具体是什么字符无关紧要。 此情况下,哪种方法效率高? 比如有10万行,哪种方法效率高?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lucasma.eth
2010-02-24
打赏
举报
回复
这个很明显吧,fgetc与fgets都要读写磁盘文件。
比如你一行有10个字符, 用fgetc要读IO 10次, 用
fgets一次就可以了, 效率肯定高.
icansaymyabc
2010-02-24
打赏
举报
回复
一般情况下,fgets 的效率比 fgetc 稍高一点,那是因为系统函数是经过专家优化的。
不过在现代计算机上处理 1000万行数据,fgets 和 fgetc 的差异你根本就看不出来。所以你还是别操这些心了,不管用哪种方法,程序能正确运行就是好的。
cy010510630
2010-02-24
打赏
举报
回复
谢谢 各位,结账.....
mLee79
2010-02-24
打赏
举报
回复
除了 mmap , fread , fwrite 以外的都慢....
stardust20
2010-02-24
打赏
举报
回复
fgets应该会比较高一点。。至少省好多的函数调用(如果没有做成宏的话)。。而且对每个字符的操作显然会比一行的多。。。
《C标准库》上面说
函数fgetc首先保证流支持普通的读操作同时一个读请求被及时接受;然后决定是否需要给流分配一个缓冲区,如果需要,则请求分配;接着它确定是否需要执行一个物理读操作(填满一个空的缓冲区或者直接输入字符),如果需要,就执行这个操作。。。。
对每个字符都执行所有这些操作的实现一定很慢。。。。
一个主要的技巧是尽可能少地的进行物理读操作,一次操作尽可能多的读取字符。。。
taodm
2010-02-24
打赏
举报
回复
自己测一下最清楚。
其实,能用就行了。
零基础Linux命令详细案例讲解课程(第3季)--文本搜索和文本处理
文本处理:
行
或者指定字段排序、去重复
行
、文本剪切、文本合并、文件比较、字符替换,学习本内容后学员可熟练掌握文本处理相关命令 课程特色: 笔记Linux命令:用200条笔记串连所有知识点,让学员从一点一滴积累,...
二进制文件和
文本文件
到底有什么不同?(二)
1)
文本文件
:这类文件以文本的ASCII码形式存储在计算机中。它是以"
行
"为基本结构的一种信息组织和存储方式。 2)二进制文件:这类文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们,只有通过相应的...
JAVA快速统计大
文本文件
行
数
然而对于大的
文本文件
,尤其是一些生信的测序文件,readLine()的方法显然不能让人满意,所以,通过查阅了一些资料,找到了一些更为
高
效的方法。测试文件选择了一个4985014
行
的文件,文件大小为242MB。测试耗时以毫秒...
文本文件
与二进制文件区别
1)
文本文件
:这类文件以文本的ASCII码形式存储在计算机中。它是以"
行
"为基本结构的一种信息组织和存储方式。 2)二进制文件:这类文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们,只有...
Matlab大型
文本文件
行
数方法
在工作中会有很多特殊的需要,比如我现在就遇到一个需要将大型的文本格式数据文件(比如5G)读取到MATLAB中,同时进
行
一定的处理。由于XP的内存是绝对没有办法将5G的数据一次性加载到工作空间的,此时一般我们是对...
C语言
69,378
社区成员
243,075
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章