2012-04-22 168 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