C语言播放声音最简单的两种方法

1、 假设仅须要播放波形文件wav格式的声音,非常easy。仅仅需一句话:

PlaySound(TEXT("Data\\1.wav"), NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);

在这里仅仅提供方法,具体问题自己去探索。

完整C语言代码:

#include <windows.h>
#pragma comment(lib, "Winmm.lib")

int main(int argc, char *argv[])
{
	//文件类型仅仅能是波形文件
	PlaySound(TEXT("Data\\1.wav"), NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);
	Sleep(50000);							//等待声音播放
	return 0;
}

2、假设想播放mp3格式的声音,非常麻烦,可是有一种方法非常easy。也仅仅需一句话:

mciSendString("play Data\\1.wav",	NULL,0,NULL);

完整C语言代码:

#include <windows.h>
#pragma comment(lib, "Winmm.lib")            //For MCI(Media Control Interface,媒体控制接口)

int main(int argc, char *argv[])
{
    //文件类型能够是:mp3、wav、avi等
    mciSendString("play Data\\1.wav",        //MCI命令字符串
        NULL,                                //存放反馈信息的缓冲区
        0,                                    //缓冲区的长度
        NULL);                                //回调窗体的句柄,一般为NULL
    Sleep(50000);                            //等待声音播放
    return 0;
}

相同的具体东西自己去搜。

时间: 2024-11-05 05:28:40

C语言播放声音最简单的两种方法的相关文章

shell中调用R语言并传入参数的两种方法

第一种: Rscript myscript.R R脚本的输出 第二种: R CMD BATCH myscript.R # Check the output cat myscript.Rout 调用R脚本的全部控制台log 传入参数: 在脚本中add args<-commandArgs(TRUE) 然后shell中: Rscript myscript.R arg1 arg2 arg3 注意取出来的参数是所有参数连在一起的character

[设计模式]两种方法实现简单工厂模式

<!--完整代码下载链接:点击下载完整代码示例--> 1.描述 在项目开发中经常会遇到根据不同的条件创建不同的对象,然后对该对象进行操作,一般都包括许多的switch -case分支如下: CBase* pBase(NULL); switch (type_variable) { case obj1: pBase = new CBaseDerivate1();break; case obj2: pBase = new CBaseDerivate2();break; ... case objN:

最简单的两种快排----掌握思想和过程

俗话说:天下武功,无坚不破.对于算法当然也是要使用时间最快.占用空间最小的算法来实现了.下面就是最简单的两种快排(其实可以算是一种). 注意:我代码里面打的备注仅供参考,建议不要背模板(因为没有固定的模板),可以写一个数列按着代码跑两圈或者把代码改一下输出每次排序后的结果. 总之,师傅领进门,修行在个人.奋斗把!骚年! ※冒泡排序.选择排序: 1 #include "cstdio" 2 #include "iostream" 3 using namespace st

shell 脚本实现乘法口诀表的两种方法——shell与C语言

shell 脚本实现乘法口诀表的两种方法--shell与C语言 话不多说直接给出代码: 1 #!/bin/bash 2 if [ $# -eq 0 ] //用于判断输入的参数个数为0 3 then 4 echo "welcome you!" 5 echo "this is a test with 2 methods to output arbitrarily mux table!" 6 else 7 echo "sorry you input invlia

【c语言】期望输出str = hello world 的两种方法

// 期望输出str = hello world 的两种方法 #include <stdio.h> char *GetStr(char **p) { *p = "hello word"; return *p; } int main() { char *str = NULL; if (NULL != GetStr(&str)) { printf(" str = %s\n",str); } return 0; } </pre><pr

将单链表排序的两种方法

对单链表排序,通常有两种方法.(PS:考察一个程序员的C语言编程功底,通常看他是否能娴熟的操作链表就知道了.) 方法1:将每一个结点保存到额外的数组中,对数组进行排序,然后根据有序的数组重新构建链表. 方法2:直接对链表进行插入排序,但是实现起来比较复杂一些. 显然,方法1最为简单,因为将链式存储L先转化为顺序存储a[],对顺序存储a[]排序,就避免了较为复杂的链接指针操作.一旦对顺序存储a[]排好序后,根据a[]重新构建一个链表是易如反掌的事情. 1. 单链表的定义如下 typedef str

web项目docker化的两种方法

标题所讲的两种方法其实就是创建docker镜像的两种方法 第一种:启动镜像后进入容器中操作,将需要的软件或者项目移动到容器中,安装或者部署,然后退出即可 第二种:编写dockerfile,将需要的镜像一层层叠加上去,比如我们要部署项目,可以先下载一个ubuntu基础镜像,然后叠加jdk,然后tomcat,然后项目 这两种方法我都试过,区别在于,第二种比较体现docker的镜像叠加特性,第一种到最终只有一层镜像. 先讲第二种吧,我之前的文章有提到过dockerfile的编写,这边直接给出简单的do

跨平台开发的两种方法及其对比

为什么移动应用开发对很多开发人员来说,都是一件令人头痛的事?这是因为,每种流行的移动平台都具有自身的开发语言.开发工具及其特征. 这就意味着,你开发一款应用不但需要花费 3 倍的开发时间,并且需要维护 3 个项目,因此开发原生应用的代价是非常巨大的. 跨平台开发的两种方法: 幸运的是,有很多公司已经在研究如何使原生 APP的开发变得简单,目前为止多平台的开发方法主要有两种: 第一种:以 Web应用为内核,填充到原生 app中(即 PhoneGap 提供的解决方案). 这种方法能够吸引那些想要转到

Qt连接数据库的两种方法

我曾经想过,无论在哪个平台下开发,都不要再接触SQL Server了,但显然不行.我们是来看世界的,不是来改变世界的,想通就好. 前两天,尝试了一下Qt下远程访问数据库.在macOS下,用Qt 5.11写个程序来远程访问Win10下的SQL Server和My SQL数据库,Qt中通过QSqlDatabase来创建一个数据库连接.简单来说,QSqlDatabase连接数据库可以分为两种方式,聊到这两种方式,就要大概的说一下数据访问的前因后果,以微软的数据访问历史为例,本文只是从快速使用的角度出发