【发布时间】:2016-05-07 08:06:05
【问题描述】:
大家好,我制作了一个复制二进制文件的程序,但我遇到了一个问题:当我试图将源文件的字段复制到目标文件时,它会删除目标文件的所有字段。我怎么解决这个问题?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char** argv)
{
FILE *source, *target;
const size_t buffer_size = 8192;
char buffer[100];
int strint[100];
int a;
source = fopen(argv[1], "rb");
if (source != NULL)
{
return -1;
}
target = fopen(argv[2], "w+b");
while (1)
{
a = fread(buffer, sizeof(char), buffer_size, source);
if (!feof(source))
{
fwrite(buffer, sizeof(char), buffer_size, target);
}
else
{
break;
}
}
fclose(target);
fclose(source);
system("pause");
return 0;
}
【问题讨论】:
-
“当我试图将源文件的字段复制到目标文件时,它会删除目标文件的所有字段。”什么意思?
-
它只是删除了文件的字段,现在它是空的
-
缓冲区大小错误,
target未检查,feof()使用错误,fwrite()大小错误。 -
那么你能告诉我如何解决这个问题吗?
-
那么程序正在做你想做的事(大部分)。使用 stackptr 发布的代码,它会做你想要的。