回答
除了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. 追加一个文本文件到另一个在Java中
- 2. 将png文件从一个文件夹复制到另一个
- 3. 将x文件从一个文件夹复制到另一个
- 4. 从一个文件到另一个文件的高效复制
- 5. 复制文件夹到另一个
- 6. 从python中将文件从一个文件复制到另一个文件
- 7. 使用vbscript将文件从一个文件夹复制到另一个文件
- 8. 如何将文件从一个文件夹复制到另一个文件夹
- 9. 将一个文件追加到另一个
- 10. 追加多个文件到一个(awk)
- 11. 将mp3文件的数据复制到另一个文件。 C
- 12. 如何将文件内容复制到另一个文件?
- 13. 复制文件内容到另一个文件
- 14. PowerShell的最新文件夹复制到另一个文件夹
- 15. 复制文件夹到另一个文件夹
- 16. 复制和粘贴文件到另一个文件夹ENOENT
- 17. 要将zip文件复制到另一个zip文件
- 18. 将文件复制到另一个文件夹
- 19. 将图像复制到另一个文件夹并重命名
- 20. 将文件夹从一组文件复制到另一个文件夹
- 21. 打开文件并将其内容复制到另一个文件中
- 22. 批处理文件列出并将文件复制到另一个目录
- 23. 追加一个CSV文件
- 24. 误差追加到一个文件,并使用一个数组
- 25. Java从一个文件复制到另一个文件,一行一行,间隔
- 26. Java ZIP文件从一个zip文件复制并粘贴到另一个文件
- 27. 的Java IO到一个文件复制到另一个
- 28. 文本追加到另一个表
- 29. 将zip文件夹中的文件复制到另一个文件夹
- 30. Applescript - 将文件从当前文件夹复制到另一个文件夹
你需要标准输入输出陆续读一个“字节”并复制到文件结束。 – 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