C中的文件操作

时间:2015-07-15 18:05:39

标签: c file-io

最近,我开始使用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

1 个答案:

答案 0 :(得分:1)

与之前的答案类似,您将两个指针视为引用不同的FILE流。执行fseek函数时,您正在更改FILE指针所在的位置。作为支票,请尝试在ftellfp_read上运行fp_write并打印出来以确定它们是否位于不同位置。

编辑:正如评论中所提到的,您可以为fp_write变量打开第二个流,如下所示进行追加。

fp_write = fopen("somefile", "a");