回答
除了cnicutar的答案,我會說:
打開該文件,你需要在「追加」模式追加(「A」參數fopen()函數)。
打開需要在「讀取」模式('r'參數爲fopen())中追加的文件。
您的問題對我來說不是100%清楚,但這是您如何將文件追加到另一個文件。 我只使用了一個1字節的緩衝區。您也可以以塊的形式複製文件。
FILE *source = fopen("to_copy", "rb");
/* I'm assuming it opened OK */
FILE *dest = fopen("dest", "ab");
/* I'm assuming it opened OK, again */
char byte;
while (!feof(source))
{
fread(&byte, sizeof(char), 1, source);
fwrite(&byte, sizeof(char), 1, dest);
}
fclose(source);
fclose(dest);
爲什麼你們這麼喜歡1字節的緩衝區?與使用1字節緩衝區發佈實際的'read' /'write'系統調用無關,因爲C庫實現很可能有一些內部緩衝,但仍然如此。 – 2012-02-07 19:41:04
正如我所說,這僅僅是一個例子。他可以找到最適合他的緩衝區大小。 – 2012-02-07 19:43:03
另外,在這段代碼的情況下,'feof','fread'和'fwrite'都將爲文件的每個字節執行。當文件具有相當大的尺寸時,開銷肯定很重要。 – 2012-02-07 19:44:36
要附加到你不需要讀每一個字節找到EOF文件,無論是在追加模式fopen("/path/to/yourFileName", "ab")
打開它,或者使用fseek(yourFilePointer, 0,SEEK_END);
我的意思是在要複製到已經以追加模式打開的其他文件的文件上達到EOF。 – jarryd 2012-02-07 21:41:51
當您在追加方式打開一個文件,文件指針默認是在現有文本的末尾。所以當你寫入這個文件時,新的內容將被「附加」到文本中。
這不是我所要求的,但謝謝。我的意思是如何複製文件數據並將其附加到另一個文件,而無需讀取我想按塊複製塊的整個文件。 – jarryd 2012-02-07 21:44:10
要文件tail
的內容複製到文件head
結束時,對於(文本或二進制)讀取和head
可以進行追加開tail
;像這樣(Plan 9的cat.c
模仿。):
#include <stdio.h>
#include <stdlib.h>
void
append(FILE *head, FILE *tail)
{
char buf[BUFSIZ];
size_t n;
while ((n = fread(buf, 1, sizeof buf, tail)) > 0)
if (fwrite(buf, 1, n, head) != n)
abort();
if (ferror(tail))
abort();
}
int main(void)
{
FILE *head = fopen("head", "ab");
FILE *tail = fopen("tail", "rb");
if (!head || !tail)
abort();
append(head, tail);
fclose(head);
fclose(tail);
exit(EXIT_SUCCESS);
}
正確的錯誤報告已作爲練習留給讀者。
Microsoft示例。
- 1. 複製文件從文件夾複製到另一個用C#
- 2. 複製到另一個文件夾並添加日期戳
- 3. 讀一個大文本文件,並選擇行復制到另一個文件
- 4. 追加一個文本文件到另一個在Java中
- 5. awk比較並將匹配追加到另一個文件中
- 6. 將x文件從一個文件夾複製到另一個
- 7. 從一個文件到另一個文件的高效複製
- 8. 將一個文件複製到另一個文件(Unix/C)?
- 9. 將png文件從一個文件夾複製到另一個
- 10. 複製到另一個文件
- 11. 複製文件夾到另一個
- 12. 從另一個HTML文件追加DIV
- 13. 複製逆向一個文件的內容複製到另一個文件
- 14. 複製文本從一個文本文件到另一個
- 15. 複製文本和追加到另一個在Perl
- 16. 將文件的一部分複製到另一個文件
- 17. 複製文本文件的內容並將其複製到另一個
- 18. 從python中將文件從一個文件複製到另一個文件
- 19. 將文件從一個文件夾複製到另一個文件夾
- 20. 使用vbscript將文件從一個文件夾複製到另一個文件
- 21. 將文件從一個文件夾複製到另一個文件夾
- 22. 如何將文件從一個文件夾複製到另一個文件夾
- 23. 重複追加到文本文件
- 24. 將一個文件追加到另一個
- 25. 追加內容從一個文件到另一個Linux的
- 26. NetUtil.asyncCopy從一個文件追加到另一個Firefox擴展
- 27. 批 - 從一個文件複製特定文本到另一個
- 28. 如何將文件列表複製到另一個文件?
- 29. 將整數從文件複製到另一個文件C
- 30. 要將zip文件複製到另一個zip文件
你需要標準輸入輸出陸續讀一個「字節」並複製到文件結束。 – Vyktor 2012-02-07 19:28:40
逐字節讀取文件聽起來並不是一個好主意。最好爲數據分配一個更大的緩衝區,例如16KB。 – 2012-02-07 19:37:49
自從您爲此標記爲「c」後,我不會將其作爲答案發布,但在linux上:cat file1 >> file2'。 Cat將文件名作爲參數並將每個文件名轉儲到stdout。 '>>'操作就像'>'用於重定向stdout,只不過它以附加模式打開目標文件。編輯:或者,'cat file1 file2> file3'可用於連接兩個文件並將其輸出指向第三個文件。 – 2012-02-07 22:28:05