使用fopen以二进制只读方式打开mp3文件,用fseek求得文件大小,申请一片相应大小的内存空间用作缓冲区,然后将文件整个读入到缓冲区中。
//二进制方式打开文件FILE* fp = fopen("example.mp3","rb")
if(NULL == fp)
{
printf("Unable to open mp3 file.\n")
exit(1)
}
//求得文件的大小
fseek(fp, 0, SEEK_END)
int size = ftell(fp)
rewind(fp)
//申请一块能装下整个文件的空间
char* buffer = (char*)malloc(sizeof(char)*size)
//读文件
fread(buffer,size,1,fp)
用C语言播放音乐,一般需要额外的库或者调用系统的API函数。
以Windows为例,可以通过PlaySound函数播放wav格式的音乐。示例如下:
#include<stdio.h>#include<windows.h>
#include<mmsystem.h>
#pragma comment(lib, "WINMM.LIB")
int main()
{
PlaySound(TEXT("1.wav"),0,SND_FILENAME) //1.wav是要播放的音乐文件
return 0
}
如果想播放mp3音乐可以使用如下代码。
注意:生成程序后,请在cmd中执行此程序,不要在vc/vs的IDE中运行。
#include <windows.h>#include <mmsystem.h>
#include <stdio.h>
#pragma comment(lib, "Winmm.lib")
int main(int argc, char *argv[])
{
//绝对地址形式
TCHAR fileName[]="ganlusi.mp3"
TCHAR shortName[MAX_PATH]
GetShortPathName(fileName,shortName,sizeof(shortName)/sizeof(TCHAR))
TCHAR cmd[MAX_PATH+10]
wsprintf(cmd,"play %s",shortName)
mciSendString(cmd,NULL, 0, NULL)
Sleep(5 * 60 * 1000) //这里是防止一播放就结束做的延迟
return 0
}