将img文件的内容复制到另一个img文件

时间:2016-05-07 19:41:04

标签: c fopen binaryfiles argv

我正在尝试创建一个打开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);
  }

}

1 个答案:

答案 0 :(得分:3)

请注意,在重新打开dstFile进行写入之前,应关闭之前的描述符。

无论如何,你打电话给fseek(srcFile, 0, SEEK_END);,但是你并没有回到开头,所以当你试图读到你时EOF。我想这是你问题的根源,如果没有(或者更确切地说,在修复它之后它仍然没有用),那么请详细说明它是如何工作的。