读取二进制文件并输出到另一个二进制文件

问题描述 投票:0回答:1

所以我试图将一个二进制文件读入一个数组,然后将该数组输出到另一个文件,因此应该得到 2 个相同的文件。

但它们是不同的文件

为什么会这样?

#include <stdio.h>

int main()
{
    unsigned int buffer[1000000];

    FILE *in;
    in = fopen("file.bin", "rb");  
    fread(buffer, sizeof(buffer), 1, in);
    fclose(in);

    FILE *out;
    out = fopen("out.bin", "wb");  
    fwrite(buffer, sizeof(buffer), 1, out);
    fclose(out);
    
    return 0;
}

这是我试过的代码

c binaryfiles
1个回答
0
投票

要复制文件,您必须只写入已读取的字节。

这里是一个带有错误检查的修改版本:

#include <errno.h>
#include <stdio.h>
#include <string.h>

int main(void) {
    unsigned int buffer[1000000];
    size_t len;
    int res = 0;

    FILE *in = fopen("file.bin", "rb"); 
    if (in == NULL) {
        perror("cannot open file.bin");
        return 1;
    } 
    FILE *out = fopen("out.bin", "wb");  
    if (out == NULL) {
        perror("cannot open out.bin");
        return 1;
    } 
    while ((len = fread(buffer, 1, sizeof(buffer), in)) != 0) {
        if (fwrite(buffer, 1, len, out) != len) {
            perror("cannot write out.bin");
            res = 1;
            break;
        }
    }
    fclose(in);
    fclose(out);
    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.