【发布时间】:2016-07-31 18:37:15
【问题描述】:
我的任务是合并多个二进制文件,然后把它们全部放在一个txt文件中,我已经有了文件的格式,我已经写好了,但是我合并失败了。这是功能: Output from the binary file into the txt file.
int merge_files()
{
FILE *f1, *ft;
char ch, name1[20];
int error, n;
char buffer[10000];
printf("\n Give name of file: "); gets_s(name1, 19);
while (strlen(name1) != NULL)
{
fopen_s(&f1, name1, "rb");
fopen_s(&ft, "finaldata.dat", "a");
if (!f1)
{
error = 1;
break;
}
else
{
error = 0;
rewind(f1);
while (n = fread(buffer, sizeof(char), 10000, f1))
{
fwrite(buffer, sizeof(char), n, ft);
fflush(ft);
}
}
fclose(f1);
fclose(ft);
printf("Files had been merged");
printf("\n Give name of file: "); gets_s(name1, 19);
}
return error;
}
【问题讨论】:
-
那是我的错,它看起来完全错误......我必须更仔细地检查 MS 版本。
-
@DavidC.Rankin 不行,我用的是 Visual Studio 2013,FILE* 与 FILE** 类型的参数不兼容
-
我告诉你错了——我很抱歉。我假设
fopen和fopen_s采用相同的参数。我不使用 MS,所以当 whozcraig 指出fopen_s实际上想要一个 pointer-to-pointer-to-FILE 时,我感到很惊讶。恢复到原来的... -
@DavidC.Rankin 'fread(buffer, sizeof(char), 10000, f1)' 我从我在这里发布的内容中复制了它,我不太明白'..sizeof(char), 10000 ..' ,它没有出现在我的代码中。
标签: c file merge binary concatenation