C++ 读写C+格式的mp3文件+;

C++ 读写C+格式的mp3文件+;,c++,visual-c++,mp3,C++,Visual C++,Mp3,我试图将一个mp3文件读入缓冲区,然后将其写入另一个mp3文件,最后播放它。计算机正在Windows xp上运行。但当我尝试播放该文件时,它会抛出一条错误消息,提示“不支持输入媒体格式”。输入mp3文件大小为7.31 MB,输出文件大小为7.34 MB。读取输入文件后的缓冲区大小为7671370 我已经发布了完成解释任务的代码片段。请解释一下这里的错误 #include <stdio.h> #include <stdlib.h> #include <iostream

我试图将一个mp3文件读入缓冲区,然后将其写入另一个mp3文件,最后播放它。计算机正在Windows xp上运行。但当我尝试播放该文件时,它会抛出一条错误消息,提示“不支持输入媒体格式”。输入mp3文件大小为7.31 MB,输出文件大小为7.34 MB。读取输入文件后的缓冲区大小为7671370

我已经发布了完成解释任务的代码片段。请解释一下这里的错误

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <windows.h>
#include <mmsystem.h>
#include <sstream>
#include <fstream>


int main () {

    FILE * iFile, * oFile;
    long lSize;
    char * buffer;
    size_t result;

    iFile = fopen ( "Ajn1.mp3" , "r" );
    if (iFile==NULL) {fputs ("File error",stderr); }

    oFile = fopen ( "Ajn2.mp3" , "w" );
    if (oFile==NULL) {fputs ("File error",stderr); }


    fseek (iFile , 0 , SEEK_END);
    lSize = ftell (iFile);
    rewind (iFile);


    buffer = (char*) malloc (sizeof(char)*lSize);
    if (buffer == NULL) {fputs ("Memory error",stderr); }


    result = fread (buffer,1,lSize,iFile);

    printf("%d\n",result);

    fwrite(buffer,lSize,1,oFile);

    fclose (iFile);
    free (buffer);
    printf("%d",lSize);
    system("pause");
    return 0;
  }
#包括
#包括
#包括
#包括
#包括
#包括
#包括
int main(){
文件*iFile,*oFile;
长时间lSize;
字符*缓冲区;
结果的大小;
iFile=fopen(“Ajn1.mp3”,“r”);
如果(iFile==NULL){fputs(“文件错误”,stderr);}
oFile=fopen(“Ajn2.mp3”,“w”);
如果(oFile==NULL){fputs(“文件错误”,stderr);}
fseek(iFile,0,SEEK_END);
lSize=ftell(iFile);
倒带(iFile);
缓冲区=(char*)malloc(sizeof(char)*lSize);
如果(buffer==NULL){fputs(“内存错误”,stderr);}
结果=fread(缓冲区,1,lSize,iFile);
printf(“%d\n”,结果);
fwrite(缓冲区,lSize,1,of文件);
fclose(iFile);
自由(缓冲);
printf(“%d”,lSize);
系统(“暂停”);
返回0;
}

Try
fopen(“Ajn1.mp3”、“rb”)(同样是为您编写的文件)。使用“代码>”RB“< /COD>和”WB“< /Cord>”作为文件模式来指示二进制文件。只需注意:输出文件也需要关闭。标记C++,但您使用的是古C函数。检查std::fstream,它很容易使用,您不必担心关闭文件:)