2012-04-22 238 views
1

假设我在C以下代码:分割ASCII文本文件

FILE* a=fopen("myfile.txt","r"); 
FILE* b,c; 

有一个在“A”,它指定在这里我要分割的地方分隔符线;我想把'a'的内容分成'b'和'c'。我想在不创建任何其他文件的情况下执行此操作。

另外,我希望通过创建一个指向'FILE *'的指针数组来动态地实现这一点。所以分隔线的数量是任意的。

对于这种情况,假定分隔线是任何具有字符串'delim'的行。

+0

没什么,因为我很少有想法。我可能猜测FILE *可以像char *一样被编址,并且像字符串一样被操纵。 – hosolmaz 2012-04-22 21:50:11

+0

我可以在不打开它的情况下将其打印到FILE *中吗? – hosolmaz 2012-04-22 21:51:26

+1

不,一个'(FILE *)'不是一个字符串,不能像一个一样操作,并且必须打开一个文件才能操作。 (其实这听起来像你正在考虑'mmap',但是还没有想到它。) – geekosaur 2012-04-22 21:55:59

回答

2

的概念可以是:

1)fopen() INFILE和(第一)OUTFILE

2),同时也可以,从INFILE fgets()线和strncmp()他们定界符

2.A)未找到分隔符:fputs() OUTFILE线

2.b)发现分隔符:fclose() OUTFILE和fopen()下一个OUTFILE

2.C文件的)端:断裂循环

3)fclose() INFILE和OUTFILE

或者这样说:

1)fopen() INFILE

2)fseek()到端的流并使用ftell()获取文件位置,我们将其称为N

3)rewind()流和fread()N字节从它进入缓冲区。

4)fclose() INFILE

5),而你可以,strstr()分隔符在缓冲区和fwrite()数据块插图中以OUTFILEs

+0

我可以在不创建任何其他文件的情况下执行此操作吗?谢谢。 – hosolmaz 2012-04-23 20:36:03

+0

没有创建临时文件?是。 – idefixs 2012-04-23 21:55:56