C++ 读写C+格式的mp3文件+;
我试图将一个mp3文件读入缓冲区,然后将其写入另一个mp3文件,最后播放它。计算机正在Windows xp上运行。但当我尝试播放该文件时,它会抛出一条错误消息,提示“不支持输入媒体格式”。输入mp3文件大小为7.31 MB,输出文件大小为7.34 MB。读取输入文件后的缓冲区大小为7671370 我已经发布了完成解释任务的代码片段。请解释一下这里的错误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
#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;
}
Tryfopen(“Ajn1.mp3”、“rb”)代码>(同样是为您编写的文件)。使用“代码>”RB“< /COD>和”WB“< /Cord>”作为文件模式来指示二进制文件。只需注意:输出文件也需要关闭。标记C++,但您使用的是古C函数。检查std::fstream,它很容易使用,您不必担心关闭文件:)