read()读文件如何能读到整行结束?

zalyer 2011-11-22 11:57:31
用read(fd,buf,size)从文件中读入size大小的内容到buffer中,但是遇到一个问题是指定的size很难刚好在一行的结束。
这样就会把文件中的一行拆开,而我需要一行一行处理, 请问如何能让read可以读到size前面的一个换行符就结束?
而把剩下的留个下次read再读完整一行?

如果用fget()可以每次读一行,但是效率比较慢,而且不能用lseek()。

或者还有其他什么函数?


谢谢
...全文
468 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiangpengmeng 2011-12-03
  • 打赏
  • 举报
回复
检测字符'\n'或其他, 或用其他函数
zalyer 2011-12-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lanqiucoco 的回复:]
《unix网络编程卷1》中把利用read函数写了个每次读入一行的函数...可以查查去
[/Quote]

非常感谢! 明天去书店看一下!
jinzhou520 2011-11-29
  • 打赏
  • 举报
回复
还有这么高级的函数, 我怎么没有看到. 看看去.
lanqiucoco 2011-11-29
  • 打赏
  • 举报
回复
《unix网络编程卷1》中把利用read函数写了个每次读入一行的函数...可以查查去
qq120848369 2011-11-23
  • 打赏
  • 举报
回复
不知道谁告诉你fgets慢得。
zalyer 2011-11-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yq_118 的回复:]
标准输入输出利用了缓冲区,效率应该差不多,可以用fseek来定位。
[/Quote]

这个方法可以试试,用read有没有其他什么解决方案,谢谢
stein42 2011-11-23
  • 打赏
  • 举报
回复
标准输入输出利用了缓冲区,效率应该差不多,可以用fseek来定位。
dongjiawei316 2011-11-23
  • 打赏
  • 举报
回复
fgets是标准IO当然比直接操作底层的read慢一些。没有lseek的话,有fseek函数啊!

23,118

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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