最近,我开始使用C语言进行文件操作,我成功地将一个文件的内容复制到另一个文件中。
我向前迈出了一步,从文件的开头读取文件的内容,然后在同一文件的末尾写入相同的内容。 (类似于追加)。但是我无法这样做。
这是我写的代码。 任何人都可以建议,我在这里做的错误是什么?
#include <stdio.h>
int main(int argc, char **argv)
{
int size = 0, index = 0;
char byte = 0;
FILE *fp_read, *fp_write;
if ((fp_read = fopen(argv[1], "r+")) == NULL)
{
printf("Unable to Open File %s\n", argv[1]);
}
fp_write = fp_read;
fseek(fp_write, 0, SEEK_END);
size = ftell(fp_write);
printf("The Size of the file %s:\t%d\n", argv[1], size);
for (index = 0; index < size; index++)
{
if (fread(&byte, 1, 1, fp_read) != 1)
{
printf("Unable to Read from the file at Location:\t%d\n", index);
}
if (fwrite(&byte, 1, 1, fp_write) != 1)
{
printf("Unable to Write to the file at Location:\t%d\n", index);
}
}
if (fclose(fp_read))
{
printf("Unsuccessful in Closed the File\n");
}
return 0;
}
此致
火影忍者Uzumaki
答案 0 :(得分:1)
与之前的答案类似,您将两个指针视为引用不同的FILE
流。执行fseek
函数时,您正在更改FILE
指针所在的位置。作为支票,请尝试在ftell
和fp_read
上运行fp_write
并打印出来以确定它们是否位于不同位置。
编辑:正如评论中所提到的,您可以为fp_write
变量打开第二个流,如下所示进行追加。
fp_write = fopen("somefile", "a");