怎么用C语言读写音乐文件

这个程序可能是最简单的mp3播放器了。当然也谈不上什么功能。但是确实能播放。

链接时要指定库文件。VC++是vfw32.lib, GCC是libvfw32.a.

我在VC6.0和GCC/MinGW 3.3.1下都通过了。

假设程序名是MyPlay, 目录下还有一个aaa.mp3, 运行MyPlay aaa.mp3即可。

注意Sleep(50000)是让他最多播放50秒。没有Sleep()的话,窗口一闪就退出了。

具体的MCI函数请查有关资料。

#include <windows.h>

#include <vfw.h>

int main(int argc, char* argv[])

{

if (argc>1) {

HWND MyPlayer = MCIWndCreate(NULL,GetModuleHandle(NULL), 0, argv[1]);

MCIWndPlay(MyPlayer);

Sleep(50000);

}

return 0;

}

这个程序还可以播放MIDI, AVI, WMV, MPG等影音文件。

如果只是后台播放MIDI或MP3,不想显示那个没有用的窗口,把MCIWndCreate()第三个参数0改成WS_POPUP即可。

如果想精确控制Sleep()至MP3播放结束,可以改成 Sleep(MCIWndGetLength(MyPlayer));

对于mp3, MCIWndGetLength()返回值的单位是毫秒,可以直接用于Sleep()延时。

对于mpg, MCIWndGetLength()返回值的单位是帧数,还要转换成毫秒才能用于Sleep().

具体MCIWndGetLength()返回值的单位是什么,可以调用MCIWndGetTimeFormat()来查询。

>是C,不是C++ 更不是Vc++

你误解了。VC6.0不只是支持C++, 也支持C. GCC更是C编译器,不是C++编译器。

这个程序是地地道道的C程序,没有一丁点儿 C++ 的成分。但是他调用了Windows API函数,所以必须用支持Windows编程的32位C编译器,不一定用VC或GCC。

很多人认为,刚学C语言最好用GCC或VC的命令行方式,但遗憾的大多教学用的C环境仍然选用20多年前的TC。如果坚持用16位的TC可以做一些事情,但在现在绝大多数事情是他做不到的。