bbs.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


[函数] 想使用read来实现从文件中读取一行数据的函数

  首页 » 论坛 » C/C++ »
[打印] [收藏] [本帖文本页] [推荐此主题给朋友]

如题,想不到有什么高效的方法.
大家帮帮忙,有没有什么好方法.



fgets?



想用
       ssize_t read(int fd, void *buf, size_t count);
来实现读取一行的操作.



不难,自己实现实现?
__________________________________
二十几年来最大的遗憾,并不是少赚了的钱,也不是少交了友,而是永远没有机会为最钟爱的数学真正做点什么,或许这会是这一生的遗憾
做个合格的电子工程师,其实很难



是不是一个字节一个字节的读,然后判断是否是\r\n.这样是不是太慢了,也太傻了.
如果读取1000个字节到缓冲,然后在判断有没有\r\n 也很傻呀??
想不出来,有什么好方法来实现那.
或者有什么方法能简单的从open打开的文件handle中读取一行数据.



循环把文件读到一个缓冲里,再把缓冲里的数据以‘\n’为分隔符分开



循环把文件读到一个缓冲里,再把缓冲里的数据以‘\n’为分隔符分开

还有一个问题.
如果我想知道文件内一共有多少行,是不是无论如何都要遍例这个文件.
很郁闷啊,如果文件很大.





QUOTE:
原帖由 mike_chen 于 2006-4-18 17:07 发表
循环把文件读到一个缓冲里,再把缓冲里的数据以‘\n’为分隔符分开



这个思路有问题,如果文件很大,可能会出现先分配的缓冲不够的现象。

建议楼主看看 vim 的原程序。
__________________________________
甲午耻,犹未雪。国人恨,何时灭。驾长车,踏破富士山缺。壮志饥餐日虏肉,笑谈渴饮倭奴血。待从头,收拾旧山河,朝天阙。
我累了,想睡觉
www.unix-dr.com



缓冲不够没关系的,可以分开来读文件。
其实我想实现的是,1判断这个文件中有多少行数据 2分行读区文件中的数据
fgets能够实现,我想 read应该也可以实现,但是现在没什么好的办法。





QUOTE:
原帖由 snow888 于 2006-4-18 17:19 发表


这个思路有问题,如果文件很大,可能会出现先分配的缓冲不够的现象。

建议楼主看看 vim 的原程序。


我好像有说过“循环”吧


Copyright © 2001-2010 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

GMT+8, 2010-02-09 20:28, Processed in 0.021309 second(s), 7 queries, Gzip enabled.