c語言放音樂
❶ C語言中PlaySound函數如何播放MP3文件
可以使用PlaySound()函數播放聲音文件,
該函數原型位於#include <mmsystem.h>中,
因此要使用PlaySound,首先需要添加對這個頭文件的引用。
提示:mm就是MultiMedia的簡寫,多媒體
【1、函數使用說明】
函數原型為: BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound);
返回值表示是否播放成功。
參數pszSound是要播放聲音的文件名,
只支持WAV等格式的文件(應該不能播放MP3格式文件);
你可以去mp3..com用「wav」為關鍵詞可以搜到很多wav音樂,
也可以用工具將其他格式的轉換為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\\Windows XP 啟
動.wav"),NULL,SND_FILENAME|SND_SYNC);
注意的問題:文件名中的反斜線要用「\\」,
因為C語言中「\」默認是轉義符,
如果要表示「\」則需要使用「\\」,
對這點不明白的請回去翻一下C語言的書;
對中文字元串要使用TEXT宏。
❷ C語言實現音樂播放器-MCI mcisendString
本次的實訓的mp3播放器主要涉及到的內容如下:
MCI API :負責音樂的播放,暫停,繼續,停止等功能
2)鏈表的構建
3)文件讀取問題
文件存儲有很多種方式,將數據寫入文件時可以以空格或者回車為結束。
在讀取時,不管是硬fscanf還是gets()進行讀取,都要注意一點,以gets為例,gets是讀到回車符號結尾,但是回車符號會被讀取進去。也就是說,需要將讀取到的字元串進行處理,最後一個字元要置為『0』;一定要注意這個問題。
還有一個_finddata這個結構體的問題:
此外由於在win10系統下不知道是我個人原因還是大部分人都有的的問題在編譯時findnext會報錯, 因為_findnext()返回類型為intptr_t而非long型,從「intptr_t」轉換到「long」丟失了數據。只需要把一般寫的:
long _findfirst( char *filespec, struct _finddata_t fileinfo );
返回值:
如果查找成功的話,將返回一個long型的唯一的查找用的句柄(就是一個唯一編號)。這個句柄將在_findnext函數中被使用。若失敗,則返回-1。
參數:
filespec:標明文件的字元串,可支持通配符。比如: .c,則表示當前文件夾下的所有後綴為C的文件。
fileinfo :這里就是用來存放文件信息的結構體的指針。這個結構體必須在調用此函數前聲明,不過不用初始化,只要分配了內存空間就可以了。
函數成功後,函數會把找到的文件的信息放入這個結構體中。
int _findnext( long handle, struct _finddata_t *fileinfo );
返回值:
若成功返回0,否則返回-1。
參數:
handle:即由_findfirst函數返回回來的句柄。
fileinfo:文件信息結構體的指針。找到文件後,函數將該文件信息放入此結構體中。
int _findclose( long handle );
返回值:成功返回0,失敗返回-1。
參數: handle :_findfirst函數返回回來的句柄
一下為一個簡化的版本主要是文件操作:
function.h
function.c
main.c