我正在尝试创建一个打开2个文件的函数 - 一个用于读取,另一个用于写入,然后将第一个文件复制到另一个二进制文件中,由于某种原因它只是不起作用。我试图调试程序几次,但我无法识别问题。
void myCopyBinary(char * * argv) {
FILE * srcFile;
FILE * dstFile;
int yesNo = 0;
char temp = ' ';
int i = 0;
int size = 0;
char * buffer;
int resultFread = 0;
int resultFwrite = 0;
srcFile = fopen(argv[1], "rb");
if (srcFile != NULL) {
dstFile = fopen(argv[2], "rb");
if (dstFile != NULL) {
printf("Would you like to overwrite it? (Every Number -YES, 0-NO): ");
scanf("%d", & yesNo);
if (yesNo == 0) {
fclose(dstFile);
exit(0);
return 1;
}
}
dstFile = fopen(argv[2], "wb");
if (dstFile != NULL) {
fseek(srcFile, 0, SEEK_END); // non-portable
size = ftell(srcFile);
buffer = (char * ) malloc(sizeof(char) * size);
if (buffer == NULL) {
printf("Error with the buffer!\n");
exit(1);
}
do {
resultFread = fread(buffer, 1, sizeof(buffer), srcFile);
resultFwrite = fwrite(buffer, 1, resultFread, dstFile);
} while (resultFread > 0);
}
}
答案 0 :(得分:3)
请注意,在重新打开dstFile
进行写入之前,应关闭之前的描述符。
无论如何,你打电话给fseek(srcFile, 0, SEEK_END);
,但是你并没有回到开头,所以当你试图读到你时EOF
。我想这是你问题的根源,如果没有(或者更确切地说,在修复它之后它仍然没有用),那么请详细说明它是如何工作的。