如何获取文件,复制文件并将其附加到另一个文件的末尾?
我想复制的文件是否需要在EOF之前打开读取,还是可以复制和追加?
答案 0 :(得分:6)
我的问题并非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 :(得分:5)
要将文件tail
的内容复制到文件head
的末尾,请打开tail
进行(文本或二进制)阅读,并head
进行追加;这样的事情(以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);
}
正确的错误报告已留给读者。
答案 2 :(得分:0)
除了cnicutar的回答,我会说:
在'append'模式下打开要附加到的文件(fopen()的'a'参数)。
打开需要以“读取”模式追加的文件(fopen()的'r'参数)。
答案 3 :(得分:0)
要附加到文件,您无需读取每个字节以查找EOF,可以在附加模式fopen("/path/to/yourFileName", "ab")
中打开它,或使用fseek(yourFilePointer, 0,SEEK_END);
答案 4 :(得分:0)
以附加模式打开文件时,默认情况下文件指针位于现有文本的末尾。因此,当您写入该文件时,新内容将“附加”到文本中。
答案 5 :(得分:0)
Microsoft示例。