当前位置:首页 » 编程软件 » c语言声音文件编译

c语言声音文件编译

发布时间: 2022-11-12 01:58:16

⑴ 如何在C程序中调用音频文件

一.在程序中直接播放声音文件
在VC++ 中的多媒体动态连接库中提供了一组与音频设备有关的函数。利用这些函数可以方便地播放声音。最简单的播放声音方法就是直接调用VC++中提供的声音播放函数BOOL sndPlaySound ( LPCSTR lpszSound,UINT fuSound ); 或BOOL PlaySound( LPCSTR lpszSound, HMODULE hmod, DWORD fuSound );其中参数lpszSound是需要播放声音的.W***文件的路径和文件名, hmod在这里为NULL,fuSound是播放声音的标志,详细说明请参考VC++中的帮助。 例如播放C:soundmusic.wav可以用sndPlaySound ("c:\sound\music.wav",SND_ASYNC);或PlaySound("c:\sound\music.wav",NULL, SND_ASYNC|SND_NODEFAULT );如果没有找到music.wav文件,第一种格式将播放系统默认的声音,第二种格式不会播放系统默认的声音。
二.将声音文件加入到程序中
在VC++的程序设计中,可以利用各种标准的资源,如位图,菜单,对话框等。同时VC++也允许用户自定义资源,因此我们可以将声音文件作为用户自定义资源加入程序资源文件中,经过编译连接生成EXE文件,实现无.W***文件的声音播放。要实现作为资源的声音文件的播放,首先要在资源管理器中加入待播放的声音文件。
具体步骤入下:
1.获得包含资源的模块句柄:
HMODULE hmod=AfxGetResourceHandle();
2.检索资源块信息:
HRSRC hSndResource=FindResource(hmod,MAKEINTRESOURCE(IDR_W***E1),_T("W***E"));
3. 装载资源数据并加锁:
HGLOBAL hGlobalMem=LoadResource(hmod,hSndResource);
LPCTSTR lpMemSound=(LPCSTR)LockResource(hGlobalMem);
4.播放声音文件:
sndPlaySound(lpMemSound,SND_MEMORY));
5.释放资源句柄:
FreeResource(hGlobalMem);

c语言声音文件播放

用C语言播放音乐,一般需要额外的库或者调用系统的API函数。

以Windows为例,可以通过PlaySound函数播放wav格式的音乐。示例如下,代码在vc6.0中编译通过。

#include<stdio.h>
#include<windows.h>
#include<mmsystem.h>
#pragmacomment(lib,"WINMM.LIB")
intmain()
{
PlaySound(TEXT("1.wav"),0,SND_FILENAME);//1.wav是要播放的音乐文件
return0;
}

如果想播放mp3音乐可以使用如下代码。

注意:生成程序后,请在cmd中执行此程序,不要在vc/vs的IDE中运行。

#include<windows.h>
#include<mmsystem.h>
#include<stdio.h>
#pragmacomment(lib,"Winmm.lib")
intmain(intargc,char*argv[])
{
//绝对地址形式
TCHARfileName[]="ganlusi.mp3";
TCHARshortName[MAX_PATH];
GetShortPathName(fileName,shortName,sizeof(shortName)/sizeof(TCHAR));
TCHARcmd[MAX_PATH+10];
wsprintf(cmd,"play%s",shortName);
mciSendString(cmd,NULL,0,NULL);
Sleep(5*60*1000);//这里是防止一播放就结束做的延迟
return0;
}

⑶ C语言源文件编译问题

标准库已经是编译好的程序了,一般是.obj文件组成,编译程序将库文件取出,然后连接好地址、分配内存,不会重新编译的,编译的是你写的源文件。
换句话说,像printf这样的函数已经编译好了等你调用,已经是机器码了。

⑷ 关于c语言头文件编译和运行的问题

1、只要在程序开头加入#include<头文件名>,在编译过程当中,头文件自动会被添加到源文件当中一起进行编译。
2、编译,编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。
C源程序头文件-->预编译处理(cpp)-->编译程序本身-->优化程序-->汇编程序-->链接程序-->可执行文件。

⑸ 如何用C语言编一个发出声音的程序

这个唱 多来米法少
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
main()
{
Beep(523,500);
Beep(587,500);
Beep(659,500);
Beep(698,500);
Beep(784,500);
Beep(880,500);
Beep(980,500);
Beep(1060,500);

Sleep(500);
Beep(523,500);
Beep(587,500);
Beep(659,500);
Beep(698,500);
Beep(784,500);
}

⑹ C语言文件的编译与执行的四个阶段并分别描述

开发C程序有四个步骤:编辑、编译、连接和运行。

任何一个体系结构处理器上都可以使用C语言程序,只要该体系结构处理器有相应的C语言编译器和库,那么C源代码就可以编译并连接到目标二进制文件上运行。

1、预处理:导入源程序并保存(C文件)。

2、编译:将源程序转换为目标文件(Obj文件)。

3、链接:将目标文件生成为可执行文件(EXE文件)。

4、运行:执行,获取运行结果的EXE文件。

(6)c语言声音文件编译扩展阅读:

将C语言代码分为程序的几个阶段:

1、首先,源代码文件测试。以及相关的头文件,比如stdio。H、由预处理器CPP预处理为.I文件。预编译的。文件不包含任何宏定义,因为所有宏都已展开,并且包含的文件已插入。我归档。

2、编译过程是对预处理文件进行词法分析、语法分析、语义分析和优化,生成相应的汇编代码文件。这个过程往往是整个程序的核心部分,也是最复杂的部分之一。

3、汇编程序不直接输出可执行文件,而是输出目标文件。汇编程序可以调用LD来生成可以运行的可执行程序。也就是说,您需要链接大量的文件才能获得“a.out”,即最终的可执行文件。

4、在链接过程中,需要重新调整其他目标文件中定义的函数调用指令,而其他目标文件中定义的变量也存在同样的问题。

⑺ C语言 怎么编程播放WAV音乐

可以使用PlaySound()函数播放声音文件,

该函数原型位于#include<mmsystem.h>中,

函数原型为:BOOLPlaySound(LPCSTRpszSound,HMODULEhmod,DWORDfdwSound);

参数pszSound是要播放声音的文件名,

只支持WAV等格式的文件

参数hmod是应用程序的实例句柄,一般传递NULL就可以;

参数fdwSound是标志的组合掩码,

可选值有SND_FILENAME、SND_ASYNC、SND_SYNC等。

SND_FILENAME表示pszSound参数指定的是文件名(pszSound还可以指定资源、内存音乐、系统音乐等等);

SND_ASYNC:用异步方式播放声音,PlaySound函数在开始播放后立即返回;

SND_SYNC:同步播放声音,在播放完后PlaySound函数才返回;

SND_LOOP一遍遍的重复播放声音,必须与SND_ASYNC标志一块使用。

【2、使用举例】
PlaySound(TEXT("C:\WINDOWS\Media\WindowsXP启动.wav"),NULL,SND_FILENAME|SND_SYNC);

⑻ 如何用c语言编写歌曲

我们知道,音乐是音高和音长的有序组合,设计微机音乐最重要的就是如何定义音高和音长,以及如何让扬声器发出指定的音符。下面给出音符与频率的关系表。C语言提供的三个函数sound( )、nosound( )和clock( )可以很方便地解决上述的问题。sound( )函数可以用指定频率打开PC机扬声器直到用nosound( )函数来关闭它; clock( )函数正好用来控制发声时间,而且它不受PC机主频高低的影响。下面这段程序可使微机发出c调1的声音。

音符与频率关系表

音符 c d e f g a b
1 2 3 4 5 6 7
频率 262 294 330 349 392 440 494

音符 c d e f g a b
1 2 3 4 5 6 7
频率 523 587 659 698 784 880 988

音符 c d e f g a b
1 2 3 4 5 6 7
频率 1047 1175 1319 1397 2568 1760 1976

#include<stdio.h>
#include<dos.h>
void pause(int);
void sound1(int,int);
void main(void)
{
int i,freq,speed=5;
int time=4*speed;
char *qm="iddgwwwQQgfff dddfghhhggg ddgwwwqqgfff\
ddffhjqqqqq wpggjhgddgqq hhqwwqjjjggg\
ddgwwwqqqgfff ddffhjqqqqqq";/*定义歌曲*/
while (*qm++ !='\0'){
i=1;
switch(*qm){
case 'k':
time=1*speed; i=0;
break;
case 'i':
time=6*speed; i=0;
break;
case 'o':
time=10*speed; i=0;
break;
case 'p':
pause(time); i=0;
break;
case 'a':
freq=523;
break;
case 's':
freq=587;
break;
case 'd':
freq=659;
break;
case 'f':
freq=698;
break;
case 'g':
freq=784;
break;
case 'h':
freq=880;
break;
case 'j':
freq=988;
break;
case 'z':
freq=262;
break;
case 'X':
freq=294;
break;
case 'c':
freq=330;
break;
case 'v':
freq=349;
break;
case 'b':
freq=392;
break;
case 'n':
freq=440;
break;
case 'm':
freq=494;
break;
case 'q':
freq=1047;
break;
case 'w':
freq=1175;
break;
case 'e':
freq=1319;
break;
case 'r':
freq=1397;
break;
case 't':
freq=2568;
break;
case 'y':
freq=1760;
break;
case 'u':
freq=1976;
break;
default:
i=0;
break;
}
if(i)
sound1(freq,time);
}
}
void sound1(int freq,int time) /*freq为频率,time为持续时间*/
{
union{
long divisor;
unsigned char c[2];
}count;
unsigned char ch;
count.divisor=1193280/freq; /* 1193280 是系统时钟速率*/
outp(67,182);
outp(66,count.c[0]);
outp(66,count.c[1]);
ch=inp(97);
outp(97,ch|3);
pause(time);
outp(97,ch);
}
void pause(int time)
{
int t1,t2;
union REGS in,out;
in.h.ah=0X2c;
int86(0X21,&in,&out); /* 取当前时间*/
t1=t2=100*out.h.dh+out.h.dl; /*out.h.dh 为秒值,out.h.dl 为1/100 秒值*/
while(t2-t1<time)
{
int86(0X21,&in,&out);
t2=100*out.h.dh+out.h.dl;
if (t2<t1)t2+=6000; /* 增加一分钟*/
}
}

⑼ C语言,文件编译

#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d %d %d",a,b,c);
printf("%d",max(a,b,c));
printf("%d",min(a,b,c));
printf("%d",sum(a,b,c));
printf("%d",CJ(a,b,c));
}

int max(a,b,c)
{
if(a>=b&&a>=c)
return a;
else if(b>=a&&b>=c)
return b;
else if(c>=a&&c>=b)
return c;
}

int min(a,b,c)
{
if(a<=b&&a<=c)
return a;
else if(b<=a&&b<=c)
return b;
else if(c<=a&&c<=b)
return c;
}

int sum(a,b,c)
{
return(a+b+c);
}

int CJ(a,b,c)
{
return(a*b*c);
}

⑽ c语言文件用什么编译

如果你使用vc2010,则可以用nmake来编译。方法如下:
1)设置环境,在命令行中输入:
c:\"Program Files"\"Microsoft Visual Studio 10.0"\Common7\Tools\vsvars32.bat

这样就自动将nmake.exe, cl.exe等等的路径加入到环境变量path中去了。
2)编写一个最简单的c程序:test.cpp,内容为:
#include <stdio.h>
void main()
{
printf( "ok!\n" );
}
3)编写一个最简单的makefile(文件名就叫makefile,没有后缀名),和test.cpp在同一个目录。内容为:
test.exe: test.cpp
cl.exe test.cpp
注意,内容虽然只与2行,但第2行的cl.exe前要有一个tab。
4)在cmd窗口,cd到makefile所在的目录,nmkae,回车,即生成了test.exe。
5)更加复杂的nmake应用和makefile的编写请网络。

热点内容
php开发的网页 发布:2025-05-14 16:22:03 浏览:477
服务器内存跑满了怎么回事 发布:2025-05-14 16:21:16 浏览:223
微信qq音乐缓存 发布:2025-05-14 16:16:16 浏览:468
c语言回收内存 发布:2025-05-14 16:16:08 浏览:143
2021国产安卓顶级旗舰买哪个 发布:2025-05-14 16:15:36 浏览:300
linux自学视频 发布:2025-05-14 16:14:49 浏览:255
我的世界服务器崩了重启 发布:2025-05-14 16:09:37 浏览:44
android深拷贝 发布:2025-05-14 16:09:35 浏览:153
cf电脑版转服务器神器还在吗 发布:2025-05-14 16:09:02 浏览:211
百度文库服务器如何搭建 发布:2025-05-14 16:09:00 浏览:248