一、导入头文件

要导入的头文件

二、用PlaySound()函数来播放音乐

PlaySound(TEXT(“要播放的音乐名称.wav”),NULL,SND_FILENAME | SND_ASYNC | SND_LOOP);

注意:c语言只支持以 “.wav” 为后缀名的音乐播放。
如果你的音乐格式不是 “.wav” 后缀可以通过一些格式转换工具来转换。例如:格式工厂。

路径问题:默认的路径就是从Debug文件中(或者说从Debug文件开始的)。
例如:
PlaySound(TEXT(“要播放的音乐名称.wav”),NULL,SND_FILENAME | SND_ASYNC | SND_LOOP);
只需把音乐放在Debug文件下即可,无需说明路径。

如果说你的路径在Debug文件下的一个叫做" 哈哈哈 "的文件夹下音乐名为666
则为:
PlaySound(TEXT(“哈哈哈\666.wav”),NULL,SND_FILENAME | SND_ASYNC | SND_LOOP);

如果说你的路径为其他任意的位置只需要把音乐路径复制下来并把路径中的单斜杠弄成双斜杆。
把路径中的单斜杠弄成双斜杆是因为单斜杠是转义字符的意思。

不过经过我的实验发现,其实音乐文件只要和 .c或者.cpp文件在同一个文件夹下就可以。

三、一些播放不了的坑。

例:例子
最后: 如果想让背景音乐结束用以下语句:

	PlaySound(NULL,NULL,SND_FILENAME);

这个运行是不能发声的。这是因为运行的太快还没有开始播放音乐就已经结束了。
有的人以为是代码的问题或者编译器的问题最后找了一圈还是没有发现问题的根源。
解决办法:加一个能让程序暂停一会儿的语句。
例:system(“pause”);
到底是不是运行太快的原因呢?我用了一个死循环语句,没有用pause来暂停。发现也是能发声的。
总结:要想让它发声必须给它一点加载、播放音乐的时间,不能说程序一瞬间就运行完了。
不过我还是推荐加system(“pause”);语句,我用死循环可以是可以,不过有时候我发现死循环不能发出声音,
应该是我电脑当时太卡了第一个发声函数还没开始发声,就循环到第二个发声函数了,致使我的电脑只有轻微的
嗡嗡声。

最后:有的人用的DEV编译器会出现以下错误
在这里插入图片描述
解决方案:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
codeblocks编译错误解决办法

找到该文件的路径复制
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、音乐模板

为了方便大家的直接使用我写了一个最最基础的播放音乐的模板。
#include<stdio.h>
#include<windows.h>
#include<mmsystem.h>
#pragma comment(lib,"Winmm.lib")
int main(void)
{
	while(1)
	{	
		PlaySound(TEXT("1.wav"),NULL,SND_FILENAME | SND_ASYNC | SND_LOOP);
		system("pause");
	}
	return 0;
} 

我又写了一篇C语言播放MP3音乐格式的文章。感兴趣的可以去看看。
用C语言播放mp3格式的音乐

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐