所以我试图将一个二进制文件读入一个数组,然后将该数组输出到另一个文件,因此应该得到 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;
}
这是我试过的代码
要复制文件,您必须只写入已读取的字节。
这里是一个带有错误检查的修改版本:
#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;
}