2011-05-22 69 views
1

我已經打開使用文件和r +但是當我使用FSEEK和FTELL文件指針始終爲0 我的文件是這樣的:FSEEK()不工作

1 -3  
2 -8  

而且我想在兩者之間添加另一條線,但在最後一行之後最後添加。 有人在另一個論壇上說,當你在追加文件中打開文件時,指針總是爲零,你必須在r +中打開它,如果這不起作用,「你必須讀取完整的數據,然後將數據插入變量並寫回來。「但我不明白他們的意思。

任何人都可以幫助插入數字在文件的中間?

謝謝!

會這樣的工作? 要傳輸數據?

rewind(fp); 
    fscanf(fp,"%d",&ch); 
    fprintf(fp1,"%d",ch); 
    fseek(fp,1,0); 
    fscanf(fp,"%d",&ch); 
    fprintf(fp1,"%d",ch); 
+2

源代碼請。 – 2011-05-22 16:11:39

+3

你不能在文件中插入東西 - 你只能修改現有的東西。 – 2011-05-22 16:14:36

回答

1

沒有open模式將允許你「插入」數據到一個文件一個隨機點。您可以添加數據而不覆蓋現有數據的唯一位置是文件的結尾(您可以使用模式「a」打開)。

如果你想插入一個隨機的位置,你需要自己做。

其中一種更簡單的方法是完全重新編寫文件(將舊文件的開頭傳輸到新文件,將數據添加到新文件中,傳輸剩餘的舊文件並重命名/覆蓋最後)。

困難的方法:您需要手動將所有數據從插入點「移動」到文件結尾。這是不正確的。

0

沒有簡單的方法在文件中間插入數據。一個文件基本上是一個字符數組。要在中間添加角色,需要將插入點下的所有內容複製到一個位置。有了一個文件,你需要讀取後面的數據並在添加後寫入。

通常,當你想做這樣的事情時,你可以創建一個新文件。將舊文件複製到要插入的位置,然後寫入要插入的數據,然後複製舊文件的其餘部分。最後,將新文件重命名爲舊文件。

2

就像其他人已經說過的那樣,沒有簡單的方法在文件中間插入數據。如果你真的想這樣做,你可以執行以下步驟:

  1. 之前創建第二個文件
  2. 複製所有數據要插入到第二個文件
  3. 插入線的地方要第二個文件
  4. 複製剩下的數據到第二個文件
  5. 刪除原始文件
  6. 重命名第二個文件

其他方法是使用二進制文件而不是文本文件。儘管二進制文件有點難學,但一旦你明白了它們的工作方式,你會發現與它們一起工作就像處理數組一樣。例如,要執行此任務,您甚至不需要使用輔助文件。

+0

第一次回答路易斯。 – thomasfedb 2011-05-23 12:54:02