将数据从一个文件复制到另一个文件时出错

时间:2014-08-05 13:15:26

标签: c

我想将数据从一个文件复制到另一个文件。但只复制一个字节。

#include<stdio.h>

void main() {
   FILE *fp1, *fp2;
   char a;

   fp1 = fopen("test.jpg", "r");
   if (fp1 == NULL) {
      puts("cannot open this file");
      exit(1);
   }

   fp2 = fopen("test1.jpg", "w+");
   if (fp2 == NULL) {
      puts("Not able to open this file");
      fclose(fp1);
      exit(1);
   }

   do {
      a = fgetc(fp1);
      fputc(a, fp2);
   } while (a != EOF);

   fcloseall();
}

test.jpg包含数据ff d8 32 86 .....但它只复制ff并从while循环中出来。我做错了什么

1 个答案:

答案 0 :(得分:3)

a声明为int,而不是char

int a;

否则,第一个0xFF会扩展为-1EOF)。

您还应该使用b打开/关闭文件(对于&#34;二进制&#34;):

fp1 = fopen("test.jpg", "rb");

// ...

fp2 = fopen("test1.jpg", "w+b");

并且,正如Drew所说,在写

之前检查EOF

while ((a = fgetc(fp1)) != EOF) {
  fputc(a, fp2);
}