在C程序中复制文件,但文件为空

时间:2017-04-06 22:56:02

标签: c file-io file-copying

我尝试将文件SwiftyAds.shared.isRemoved = true 的内容复制到test1.mal,程序说它正在这样做并且所有内容都会编译,但是当我打开output.txt时文件,它是空白的...有人能告诉我哪里出错了吗?

output.txt

4 个答案:

答案 0 :(得分:0)

您正在将文件复制到标准输出:

fputs(content, stdout);

必须由

取代
fputs(content, fp2);

当您使用fprintf在输出文件中写入时,文件的光标已经在最后。您可以使用带有SEEK_SET的fseek()将其作为开头。

答案 1 :(得分:0)

您只需要一个缓冲区即可从输入文件中读取并将其写入输出文件。并且您需要在最后关闭文件以确保数据被刷新。

let proxied = createDeepProxy(obj, {
    set(target, path, value, receiver) {
        console.log(Chalk.green('set'), path.join('.'), Chalk.dim('='), inspect(value));
    },

    deleteProperty(target, path) {
        console.log(Chalk.red('delete'), path.join('.'));
    }
});

proxied.foo = 'bar'; // will trigger `set`
delete proxified.foo; // will trigger `deleteProperty`

答案 2 :(得分:0)

首先,你应该记住,在意识形态上更真实的是使用" rb"," wb"这里。当输入存在时,您必须将字节从一个文件复制到另一个文件。

#include <stdio.h>

int main() {
    freopen("input.txt", "rb", stdin);
    freopen("output.txt", "wb", stdout);
    unsigned char byte;
    while (scanf("%c", &byte) > 0)
        printf("%c", byte);

    return 0;
}

答案 3 :(得分:0)

您将文件读到最后,写入stdout。当您尝试进入第二个循环再次读取它时...您什么也得不到,因为您已经读过整个文件。尝试rewindfseek返回到开头。或者只是重新打开文件。换句话说,只需添加:

rewind(fp1);

在第二个while循环之前。