首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

【大侠们帮助下小初学者】文件I/O操作有关问题

2012-04-21 
【大侠们帮助下小菜鸟】文件I/O操作问题自己在学习linux c 的文件I/O操作这一块时,遇到一个小问题,在读取文

【大侠们帮助下小菜鸟】文件I/O操作问题
自己在学习linux c 的文件I/O操作这一块时,遇到一个小问题,在读取文本的时候,如果文本里面的字符总长度大于了自己所设置的缓冲区长度的话,该如何循环多次读取并显示出来啊!!(额,不要说将缓冲区设置很大,要是文本的数据量太大也是不行的)能只用open() read()或者fopen() fread()之类的函数实现么?或者还是其他的

[解决办法]
如果文本分行,每次循环时,使用getline()都取一行。
如果文本不分行,当文件较大时,没有其他办法,只能使用内存映射文件了。
[解决办法]
你自己不是已经知道答案了吗?你读了n和字节,文件指针自动往后移动n个字节,既然知道这个原理,你用循环的方式不久可以全部读完了
[解决办法]

C/C++ code
#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);}
[解决办法]
探讨
你自己不是已经知道答案了吗?你读了n和字节,文件指针自动往后移动n个字节,既然知道这个原理,你用循环的方式不久可以全部读完了

热点排行