【大侠们帮助下小菜鸟】文件I/O操作问题
自己在学习linux c 的文件I/O操作这一块时,遇到一个小问题,在读取文本的时候,如果文本里面的字符总长度大于了自己所设置的缓冲区长度的话,该如何循环多次读取并显示出来啊!!(额,不要说将缓冲区设置很大,要是文本的数据量太大也是不行的)能只用open() read()或者fopen() fread()之类的函数实现么?或者还是其他的
[解决办法]
如果文本分行,每次循环时,使用getline()都取一行。
如果文本不分行,当文件较大时,没有其他办法,只能使用内存映射文件了。
[解决办法]
你自己不是已经知道答案了吗?你读了n和字节,文件指针自动往后移动n个字节,既然知道这个原理,你用循环的方式不久可以全部读完了
[解决办法]
#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);}
[解决办法]