【大侠们帮助下小菜鸟】文件I/O操作问题

Barbiegirl2010 2011-09-27 04:52:44
自己在学习linux c 的文件I/O操作这一块时,遇到一个小问题,在读取文本的时候,如果文本里面的字符总长度大于了自己所设置的缓冲区长度的话,该如何循环多次读取并显示出来啊!!(额,不要说将缓冲区设置很大,要是文本的数据量太大也是不行的)能只用open() read()或者fopen() fread()之类的函数实现么?或者还是其他的
...全文
57 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
AnYidan 2011-09-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fengxuxing 的回复:]
你自己不是已经知道答案了吗?你读了n和字节,文件指针自动往后移动n个字节,既然知道这个原理,你用循环的方式不久可以全部读完了
[/Quote]

++
赵4老师 2011-09-27
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string.h>
char ln[80];
FILE *f;
int i,a;
void main() {
f=fopen("test.txt","r");
if (NULL==f) return;
i=0;
a=1;
while(1) {
if (NULL==fgets(ln,80,f)) break;
if ('\n'==ln[strlen(ln)-1]) {
if (a) {
i++;
printf("%8d %s",i,ln);
} else {
printf("%s",ln);
a=1;
}
} else {
if (a) {
i++;
printf("%8d %s",i,ln);
a=0;
} else {
printf("%s",ln);
}
}
}
fclose(f);
}
Qlaiaqu 2011-09-27
  • 打赏
  • 举报
回复
你自己不是已经知道答案了吗?你读了n和字节,文件指针自动往后移动n个字节,既然知道这个原理,你用循环的方式不久可以全部读完了
大IP 2011-09-27
  • 打赏
  • 举报
回复
如果文本分行,每次循环时,使用getline()都取一行。
如果文本不分行,当文件较大时,没有其他办法,只能使用内存映射文件了。

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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