嘿社区我无法从命令行复制二进制文件看看我的尝试。下面的代码复制了srcFile上的第一个字符并以某种方式停止,你们能帮助我找出解决这个问题的方法及其发生的原因吗?
#include <stdio.h>
#include <stdlib.h>
#define BUFSIZE 8500
int main(int argc, char** argv)
{
char buffer[BUFSIZE];
size_t currBit;
FILE *srcFile = fopen(argv[1], "r+b");
if (!srcFile)
{
printf("source file doesnt exist or problem with allocating the memory");
return 1;
}
FILE *dstFile = fopen(argv[2], "r+b");
if (dstFile)
{
printf("Destination file already exists\nfor overwriting enter 1 \nfor exit enter 2\n");
_flushall();
switch (getchar())
{
case '1':
fclose(dstFile);
dstFile = fopen(argv[2], "w+b");
if (!dstFile)
{
printf("Problem with allocating the memory");
}
while ((currBit = fread(buffer, sizeof(char),BUFSIZE, srcFile) > 0))
{
fwrite(buffer, sizeof(char), currBit, dstFile);
}
break;
case '2':
system("pause");
return 0;
break;
default:
printf("next time you should enter numbers as following");
}
}
else
{
dstFile = fopen(argv[2], "w+b");
while ((currBit = fread(buffer, sizeof(char), BUFSIZE, srcFile) > 0))
{
fwrite(buffer, sizeof(char), currBit, dstFile);
}
if (!dstFile)
{
printf("Problem with allocating the memory");
}
}
fclose(srcFile);
fclose(dstFile);
getchar();
return 0;
}
输入源文件: 10100101
目标文件的预期输出: 10100101
目标文件输出: 1
答案 0 :(得分:1)
while ((currBit = fread(buffer, sizeof(char),BUFSIZE, srcFile) > 0))
查看>
的位置......在分配给currBit
之前,您正在与零进行比较,因此您始终指定一个布尔值(1/0) 。将>
移到括号的最外层。
答案 1 :(得分:-1)
'while ((currBit = fread(buffer, sizeof(char), BUFSIZE, srcFile) > 0))'
复合表达式中错位的括号会导致&#39; currBit&#39;正在加载一个布尔结果。