文件操作复制一个.mp3文件以创建另一个相同的文件

时间:2013-09-10 15:53:05

标签: c file-io

我试图复制一个音乐文件(.mp3)的内容以创建另一个音乐(.mp3)文件。我试过这个,

     #include<stdio.h>
     #include<conio.h>
     int main()
     {
      FILE *a, *b;
      char c;

     a = fopen("linkinpark.mp3","rb");
     b = fopen("linkinpark1.mp3","wb");
     while((ch = getc(a)) != EOF)
     fprintf(b,"%c",ch);
     fclose(a);
     fclose(b);
     return 0;
     }  

可能是我犯了一些错误,比如使用char变量并将其写入二进制文件中,并且还创建了linkinpark1.mp3但它已损坏。
它可能的解决方案是什么?

1 个答案:

答案 0 :(得分:0)

getc()会返回int,而不是char。它需要返回int,因为它返回从流中读取的下一个字节作为0到255之间的值,EOF,通常为-1。由于有257个可能的输出,您需要能够区分字节255和标记EOF,但您的代码将两者混为一谈。因此,一旦你点击值为255的第一个字节,就会错误地将文件缩短。

如果您将c更改为int而非char,则应该可以正常使用。