例如,如果文件中包含:如何在使用fgets()讀取一行後移回到前一行的開頭?
12345
-3445654
1245646
我想讀的第一行到使用fgets()
的字符串。然後我想在第二行中查看第一個位置是否有'-'
。如果有的話,我會把第二行和strcat
讀到第一行。
然後我想再次使用fgets()
來讀取第三行。這次沒有'-'
我只想讓文件回到第三行的開頭,這樣下一次我撥打fgets()
時,它會再次讀取同一行的第三行。
有沒有一種方法可以做到這一點?
例如,如果文件中包含:如何在使用fgets()讀取一行後移回到前一行的開頭?
12345
-3445654
1245646
我想讀的第一行到使用fgets()
的字符串。然後我想在第二行中查看第一個位置是否有'-'
。如果有的話,我會把第二行和strcat
讀到第一行。
然後我想再次使用fgets()
來讀取第三行。這次沒有'-'
我只想讓文件回到第三行的開頭,這樣下一次我撥打fgets()
時,它會再次讀取同一行的第三行。
有沒有一種方法可以做到這一點?
通常,您只會將剛剛讀取的文件部分保留在內存中,直到您確定不再需要它爲止。或者您可以將整個文件讀入緩衝區,然後使用指針隨意跳轉。
或者如果您確實需要,您可以使用fseek更多的當前流位置,然後重新讀取您需要的零件。
每當我想
我最常做的是申報第二行持有變量
char prevline[whateversize];
然後,冥冥中步驟1和2之間
strcpy(prevline, line);
(當然你必須要確保line
和prevline
變量始終分配,例如作爲相同大小的數組,因此溢出不成問題。)
C的IO機制被有意地稱爲「stream」IO。 – Olaf
如果輸入如下所示('/''字符代表換行符):'12345/-3445654/-1245646',你會發生什麼?或者如果你讀的第一行以'' - ''開始? –
你是否希望能夠在無法執行'seek()'操作的流上執行此操作? –