當前位置:首頁 » 編程語言 » c語言判斷音頻文件
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言判斷音頻文件

發布時間: 2022-05-19 06:41:27

① 在c語言中怎麼調用音樂文件

最好使用WINDOWS API來寫,因為不使用API可能還要自己寫個類似於播放器的功能~
舉個例子:
#pragma comment(lib,"Winmm.lib")
#include <stdio.h>
void playLyric()
{
;
}
#include <windows.h>
void main(){
PlaySound("C:\\WINDOWS\\Media\\recycle.wav",NULL,SND_ASYNC);
playLyric();
}

② c語言有關文件操作

最BS樓上__abc這種直接拿到詞霸里翻譯,看都不看結果就貼上來的人。

==========================

代碼部分我在完善中,已經可以順利讀取ID3信息。
基本完工後我會貼到空間里,隨後轉貼過來。

P.S.15分有點少……

==========================

完成:http://hi..com/crazycola/blog/item/45e816fd9d7e2b1509244d34.html

完整代碼:

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>

#define MAXFILENAME 256

typedef struct tag_id3v1 {
char title[31];
char artist[31];
char album[31];
char year[5];
char comment[31];
char genre;
} TAG_ID3V1;

char* genre_id3v1[] = {
"Blues", "Classic Rock", "Country", "Dance", "Disco", // 00-04 // 代碼開放,禁止抄襲,轉載請註明hi..com/crazycola原創
"Funk", "Grunge", "Hip-Hop", "Jazz", "Metal", // 05-09
"New Age", "Oldies", "Other", "Pop", "R&B", // 10-14
"Rap", "Reggae", "Rock", "Techno", "Instrial", // 15-19
"Alternative", "Ska", "Death Metal", "Pranks", "Soundtrack", // 20-24
"Euro-Techno", "Ambient", "Trip-Hop", "Vocal", "Jazz+Funk", // 25-29
"Fusion", "Trance", "Classical", "Instrumental", "Acid", // 30-34
"House", "Game", "Sound Clip", "Gospel", "Noise", // 35-39
"AlternRock", "Bass", "Soul", "Punk", "Space", // 40-44
"Meditative", "Instrumental Pop", "Instrumental Rock", "Ethnic", "Gothic", // 45-49
"Darkwave", "Techno-Instrial", "Electronic", "Pop-Folk", "Eurodance", // 50-54 // 代碼開放,禁止抄襲,轉載請註明hi..com/crazycola原創
"Dream", "Southern Rock", "Comedy", "Cult", "Gangsta", // 55-59
"Top 40", "Christian Rap", "Pop/Funk", "Jungle", "Native American", // 60-64
"Cabaret", "New Wave", "Psychadelic", "Rave", "Showtunes", // 65-69
"Trailer", "Lo-Fi", "Tribal", "Acid Punk", "Acid Jazz", // 70-74
"Polka", "Retro", "Musical", "Rock & Roll", "Hard Rock" // 75-79
};// 代碼開放,禁止抄襲,轉載請註明hi..com/crazycola原創

void info( FILE* fp, char* target, int size )
{
char* strtmp = NULL;
int num_read = 0;
strtmp = (char*)malloc((size+1)*sizeof(char));
num_read = fread( strtmp, sizeof(char), size, fp );
strtmp[num_read]='\0';
strcpy( target, strtmp );
free(strtmp); strtmp=NULL;
}

void getID3v1( FILE* fp, TAG_ID3V1* tag )
{
// make sure fp and tag are both correct pointers
info( fp, tag->title, 30 );
info( fp, tag->artist, 30 );
info( fp, tag->album, 30 );
info( fp, tag->year, 4 );
info( fp, tag->comment, 30 );
tag->genre = fgetc(fp);
}

void main()
{
char* fname = NULL;
char* strtmp = NULL;
char ext[5] = ".mp3";
FILE* fp = NULL;
// 代碼開放,禁止抄襲,轉載請註明hi..com/crazycola原創
int i, ch, c_yesno = 0;
int num_read = 0;

while( c_yesno != 27 )
{
fname = (char*)malloc(MAXFILENAME*sizeof(char));
do {
system("cls");
printf( "Enter filename: " );
for( i = 0; (i < MAXFILENAME) && ((ch = getchar()) != EOF)
&& (ch != '\n'); i++ )
fname[i] = (char)ch;
fname[i] = '\0';
} while(fname[0]=='\0');
// 代碼開放,禁止抄襲,轉載請註明hi..com/crazycola原創
if( strlen(fname)<5 )
{
printf("Error: filename too short.\n");
free(fname); fname=NULL;
printf("\nPress any key to re-enter... ");
getch(); continue; // exit(-1);
} else {
strtmp = (char*)malloc(5*sizeof(char));
for( i=0; i<4; i++ )
strtmp[i] = fname[strlen(fname)-4+i];
strtmp[i]='\0';
if( stricmp( strtmp, ext ) != 0 )
{ // 代碼開放,禁止抄襲,轉載請註明hi..com/crazycola原創
printf("Error: file may not be a MP3(MPEG Layer-3) file.\n");
free(fname); fname=NULL;
free(strtmp); strtmp=NULL;
printf("\nPress any key to re-enter... ");
getch(); continue; // exit(-2);
} else {
free(strtmp); strtmp=NULL;
if( ( fp = fopen( fname, "rb" ) ) == NULL )
{ // 代碼開放,禁止抄襲,轉載請註明hi..com/crazycola原創
printf("Error: failed to open file: %s\n", fname );
free(fname); fname=NULL;
printf("\nPress any key to re-enter... ");
getch(); continue; // exit(-3);
} else {
fseek( fp, -128, SEEK_END );
strtmp = (char*)malloc(4*sizeof(char));
num_read = fread( strtmp, sizeof(char), 3, fp );
// if fread fails.. do something here
strtmp[num_read]='\0';
if( stricmp( strtmp, "TAG" ) != 0 )
{ // 代碼開放,禁止抄襲,轉載請註明hi..com/crazycola原創
printf("Error: failed to load ID3v1 infomation from file: %s\n", fname );
free(strtmp); strtmp=NULL;
free(fname); fname=NULL;
printf("\nPress any key to re-enter... ");
getch(); continue; // exit(-4);
} else {
TAG_ID3V1 tag;
free(strtmp); strtmp=NULL;

getID3v1( fp, &tag );

free(strtmp); strtmp=NULL;
printf("\nID3v1 Infomation:\n");
printf("Title: %s\n",tag.title);
printf("Artist: %s\n",tag.artist);
printf("Album: %s\n",tag.album);
printf("Year: %s\n",tag.year);
printf("Comment: %s\n",tag.comment);
i=(int)(tag.genre);
printf("Genre: [%d] %s\n",i,(0<i&&i<80)?genre_id3v1[i]:"<Undefined>");
}
// 代碼開放,禁止抄襲,轉載請註明hi..com/crazycola原創
free(fname); fname=NULL;
fclose(fp);
} // else( ( fp = fopen( fname, "rb" ) ) == NULL )
} // else( stricmp( strtmp, ext ) != 0 )
} // else( strlen(fname)<5 )
printf("\nEnter again? (ESC or Ctrl+C to abort) ");
c_yesno = getch();
}// while( c_yesno != 27 )
} // main

③ 怎樣用C語言編程打開一個文件(比如mp3,mp4)

可以使用PlaySound()函數播放mp3音頻,該函數原型位於windows.h。

PlaySound函數的聲明為:
BOOL PlaySound(LPCSTR pszSound, HMODULE hwnd,DWORD fdwSound);
參數pszSound是指定了要播放聲音的字元串。
參數hwnd是應用程序的實例句柄,除非pszSound的指向一個資源標識符(即fdwSound被定義為SND_RESOURCE),否則必須設置為NULL。
參數fdwSound是標志的組合,如下表所示。若成功則函數返回TRUE,否則返回FALSE。
使用PlaySound函數時需要在#include<windows.h>後面加上(注意:不能加在前面):
常式:

CFileDialog dlg(TRUE, "mp3", "*.mp3", OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT, "mp3文件(*.mp3)|*.mp3|");
/*創建選擇對話框,讓用戶從文件夾中選取一個MP3文件*/
int iRet = dlg.DoModal();//獲得對話框返回值
if(IDOK == iRet) //如果返回值成功,表明成功獲取一個MP3文件
{
CString pathName= dlg.GetPathName(); //得到文件的路徑名稱
PlaySound( pathName , NULL, SND_FILENAME | SND_ASYNC);//用playsound函數播放該文件
}

④ 怎麼用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,GetMoleHandle(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可以做一些事情,但在現在絕大多數事情是他做不到的。

⑤ c語言打開音樂文件

用C語言播放音樂,一般需要額外的庫或者調用系統的API函數。

以Windows為例,可以通過PlaySound函數播放wav格式的音樂。示例如下:

#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 語言:能不能用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語言打開一個音樂文件,求詳細代碼和解釋,非常感謝。

這個必須使用系統的API,在Windows下,API可以直接打開AVI視頻文件,WAV聲音文件和BMP圖片文件。這些可以直接使用C語言實現。
打開AVI文件可以使用VFW的API
(系統自帶的)(還可以直接控制攝像頭)
WAV就很簡單了,只要包含了windows.h,就可以直接使用PlaySound
函數播放
BMP圖片,也可以使用VFW來顯示。使用VFW的時候,要包含vfw.h
這些你網路一下VFW就能找到圖片和視頻的例子,
網路PlaySound就能找到播放聲音的例子。

⑧ 怎麼用c語言打開一個MP3文件(直接給代碼),需要什麼軟體進行輸入

VC++中播放聲音的方法
2009-09-23 14:58
聲音是多媒體的一個重要組成部分,在應用程序中加入聲音可以使界面更友好。在VC++中可以根據不同的應用要求,用不同的方法實現聲音的播放。

一.播放聲音文件的簡單方法
在VC++ 中的多媒體動態連接庫中提供了一組與音頻設備有關的函數。利用這些函數可以方便地播放聲音。最簡單的播放聲音方法就是直接調用VC++中提供的聲音播放函數BOOL sndPlaySound ( LPCSTR lpszSound,UINT fuSound ); 或BOOL PlaySound( LPCSTR lpszSound, HMODULE hmod, DWORD fuSound );其中參數lpszSound是需要播放聲音的.WAV文件的路徑和文件名, 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文件,實現無.WAV文件的聲音播放。
要實現作為資源的聲音文件的播放,首先要在資源管理器中加入待播放的聲音文件(實現過程並不復雜,這里不在敘述)。假設生成的聲音文件資源標識符為IDR_WAVE1。在播放時只需要調用下面的語句:
PlaySound(MAKEINTRESOURCE(IDR_WAVE1),AfxGetResourceHandle(), SND_ASYNC|SND_RESOURCE|SND_NODEFAULT|SND_LOOP);
其中MAKEINTRESOURCE()宏將整數資源標識符轉變為字元串,AfxGetResourceHandle()函數返回包含資源的模塊句柄,
SND_RESOURCE是必須的標志。
作為資源的聲音文件的第二種播放方法是把資源讀入內存後作為內存數據播放。具體步驟入下:
1.獲得包含資源的模塊句柄:
HMODULE hmod=AfxGetResourceHandle();
2.檢索資源塊信息:
HRSRC hSndResource=FindResource(hmod,MAKEINTRESOURCE(IDR_WAVE1),_T("WAVE"));
3. 裝載資源數據並加鎖:
HGLOBAL hGlobalMem=LoadResource(hmod,hSndResource);
LPCTSTR lpMemSound=(LPCSTR)LockResource(hGlobalMem);
4.播放聲音文件:
sndPlaySound(lpMemSound,SND_MEMORY));
5.釋放資源句柄:
FreeResource(hGlobalMem);

三.播放聲音文件的高級方法
在VC++中提供了一組對音頻設備及多媒體文件直接進行操作的函數。利用這些函數可以靈活地對聲音文件進行各種處理。
首先介紹幾個要用到的數據結構。WAVEFORMATEX結構定義了WAVE音頻數據文件的格式。WAVEHDR結構定義了波形音頻緩沖區。讀出的數據首先要填充此緩沖區才能送音頻設備播放。WAVEOUTCAPS結構描述了音頻設備的性能。MMCKINFO結構包含了RIFF文件中一個塊的信息。詳細的說明請參考VC++中的幫助。
下面給出程序流程簡圖及程序源代碼清單,在VC++環境下可直接使用:

源程序清單如下:
LPSTR szFileName;//聲音文件名
MMCKINFO mmckinfoParent;
MMCKINFO mmckinfoSubChunk;
DWORD dwFmtSize;
HMMIO m_hmmio;//音頻文件句柄
DWORD m_WaveLong;
HPSTR lpData;//音頻數據
HANDLE m_hData;
HANDLE m_hFormat;
WAVEFORMATEX * lpFormat;
DWORD m_dwDataOffset;
DWORD m_dwDataSize;
WAVEHDR pWaveOutHdr;
WAVEOUTCAPS pwoc;
HWAVEOUT hWaveOut;
//打開波形文件
if(!(m_hmmio=mmioOpen(szFileName,NULL,MMIO_READ|MMIO_ALLOCBUF)))
{
//File open Error
Error("Failed to open the file.");//錯誤處理函數
return false;
}
//檢查打開文件是否是聲音文件
mmckinfoParent.fccType =mmioFOURCC('W','A','V','E');
if(mmioDescend(m_hmmio,(LPMMCKINFO)&mmckinfoParent,NULL,MMIO_FINDRIFF))
{
//NOT WAVE FILE AND QUIT
}
//尋找 'fmt' 塊
mmckinfoSubChunk.ckid =mmioFOURCC('f','m','t',' ');
if(mmioDescend(m_hmmio,&mmckinfoSubChunk,&mmckinfoParent,MMIO_FINDCHUNK))
{
//Can't find 'fmt' chunk
}
//獲得 'fmt '塊的大小,申請內存
dwFmtSize=mmckinfoSubChunk.cksize ;
m_hFormat=LocalAlloc(LMEM_MOVEABLE,LOWORD(dwFmtSize));
if(!m_hFormat)
{
//failed alloc memory
}
lpFormat=(WAVEFORMATEX*)LocalLock(m_hFormat);
if(!lpFormat)
{
//failed to lock the memory
}
if((unsigned long)mmioRead(m_hmmio,(HPSTR)lpFormat,dwFmtSize)!=dwFmtSize)
{
//failed to read format chunk
}
//離開 fmt 塊
mmioAscend(m_hmmio,&mmckinfoSubChunk,0);
//尋找 'data' 塊
mmckinfoSubChunk.ckid=mmioFOURCC('d','a','t','a');
if(mmioDescend(m_hmmio,&mmckinfoSubChunk,&mmckinfoParent,MMIO_FINDCHUNK))
{
//Can't find 'data' chunk
}
//獲得 'data'塊的大小
m_dwDataSize=mmckinfoSubChunk.cksize ;
m_dwDataOffset =mmckinfoSubChunk.dwDataOffset ;
if(m_dwDataSize==0L)
{
//no data in the 'data' chunk
}
//為音頻數據分配內存
lpData=new char[m_dwDataSize];
if(!lpData)
{
//faile
}
if(mmioSeek(m_hmmio,SoundOffset,SEEK_SET)<0)
{
//Failed to read the data chunk
}
m_WaveLong=mmioRead(m_hmmio,lpData,SoundLong);
if(m_WaveLong<0)
{
//Failed to read the data chunk
}
//檢查音頻設備,返迴音頻輸出設備的性能
if(waveOutGetDeVCaps(WAVE_MAPPER,&pwoc,sizeof(WAVEOUTCAPS))!=0)
{
//Unable to allocate or lock memory
}
//檢查音頻輸出設備是否能播放指定的音頻文件
if(waveOutOpen(&hWaveOut,DevsNum,lpFormat,NULL,NULL,CALLBACK_NULL)!=0)
{
//Failed to OPEN the wave out devices
}
//准備待播放的數據
pWaveOutHdr.lpData =(HPSTR)lpData;
pWave

OutHdr.dwBufferLength =m_WaveLong;
pWaveOutHdr.dwFlags =0;
if(waveOutPrepareHeader(hWaveOut,&pWaveOutHdr,sizeof(WAVEHDR))!=0)
{
//Failed to prepare the wave data buffer
}
//播放音頻數據文件
if(waveOutWrite(hWaveOut,&pWaveOutHdr,sizeof(WAVEHDR))!=0)
{
//Failed to write the wave data buffer
}
//關閉音頻輸出設備,釋放內存
waveOutReset(hWaveOut);
waveOutClose(hWaveOut);
LocalUnlock(m_hFormat);
LocalFree(m_hFormat);
delete [] lpData;
說明:1)以上使用的音頻設備和聲音文件操作函數的聲明包含在mmsystem.h頭文件中,因此在程序中必須用#include "mmsystem.h"語句加入頭文件。同時在編譯時要加入動態連接導入庫winmm.lib,具體實現方法是從Developer Studio的Project菜單中選擇Settings,然後在Link選項卡上的Object/Library Moles控制中加入winmm.lib。2)在pWaveOutHdr.lpData中指定不同的數據,可以播放音頻數據文件中任意指定位置的聲音。3) 以上程序均在VC++6.0中調試通過,在文中省略了對錯誤及異常情況的處理,在實際應用中必須加入。
四.結論
在VC++中可以根據應用需要採用不同的方法播放聲音文件。簡單應用可以直接調用聲音播放函數。第二種方法可以把聲音作為資源加入可執行文件中。如果在播放之前要對聲音數據進行處理,可用第三種方法。

參考書目:
1. 美 Paul Perry 陳向群 等譯《多媒體開發指南》 清華大學出版社
2. 美 Peter Norton, Rob McGregor 孫鳳英 等譯《MFC開發Windows95/NT4應用程序》 清華大學出版社 1998
3. 周敬利 《多媒體音效卡技術及應用》 電子工業出版社 1998

⑨ C語言播放音頻文件的問題....

可以使用PlaySound()函數播放wav聲音,該函數原型位於windows.h中,
函數原型為:
BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound);

參數pszSound是指定了要播放聲音的字元串,該參數可以是WAVE文件的名字,或是WAV資源的名字,或是內存中聲音數據的指針,或是在系統注冊表WIN.INI中定義的系統事件聲音。如果該參數為NULL則停止正在播放的聲音。

參數hmod是應用程序的實例句柄,當播放WAV資源時要用到該參數,否則它必須為NULL。

參數fdwSound是標志的組合,各種可選的標志及意義如下所示。若成功則函數返回TRUE,否則返回FALSE。

播放標志以及含義:

SND_APPLICATION
用應用程序指定的關聯來播放聲音。

SND_ALIAS
pszSound參數指定了注冊表或WIN.INI中的系統事件的別名。

SND_ALIAS_ID
pszSound參數指定了預定義的聲音標識符。

SND_ASYNC
用非同步方式播放聲音,PlaySound函數在開始播放後立即返回。

SND_FILENAME
pszSound參數指定了WAVE文件名。

SND_LOOP
重復播放聲音,必須與SND_ASYNC標志一塊使用。

SND_MEMORY
播放載入到內存中的聲音,此時pszSound是指向聲音數據的指針。

SND_NODEFAULT
不播放預設聲音,若無此標志,則PlaySound在沒找到聲音時會播放預設聲音。

SND_NOSTOP
PlaySound不打斷原來的聲音播出並立即返回FALSE。

SND_NOWAIT
如果驅動程序正忙則函數就不播放聲音並立即返回。

SND_PURGE
停止所有與調用任務有關的聲音。若參數pszSound為NULL,就停止所有的聲音,否則,停止pszSound指定的聲音。

SND_RESOURCE
pszSound參數是WAVE資源的標識符,這時要用到hmod參數。

SND_SYNC
同步播放聲音,在播放完後PlaySound函數才返回。

************************************************************

例如我想播放在C:\WINDOWS\Media目錄中的 Windows XP 啟動.wav 文件
程序如下:

#include <windows.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
PlaySound("C:\\WINDOWS\\Media\\Windows XP 啟動.wav", NULL, SND_FILENAME | SND_ASYNC);
system("pause");
return 0;
}

⑩ C語言如何判斷文件類型

c語言文件類型指針是通過file
*fp;
這種形式進行定義的。
關於file結構在vc6中有如下定義:
#ifndef _file_defined
struct _iobuf {
char *_ptr; //文件輸入的下一個位置
int _cnt; //當前緩沖區的相對位置
char *_base; //指基礎位置(即是文件的起始位置)
int _flag; //文件標志
int _file; //文件描述符id
int _charbuf; //檢查緩沖區狀況,如果無緩沖區則不讀取
int _bufsiz; //文件緩沖區大小
char *_tmpfname; //臨時文件名
};
typedef struct _iobuf file;
#define _file_defined
#endifc程序用不同的file結構管理每個文件。程序員可以使用文件,但是不需要知道file結構的細節。實際上,file結構是間接地操作系統的文件控制塊(fcb)來實現對文件的操作的,如下圖:
上面圖中的_file實際上是一個描述符,作為進入打開文件表索引的整數。
文件是存放在物理磁碟上的,包括文件控制塊(fcb)和數據塊。文件控制塊通常包括文件許可權、日期(創建、讀取、修改)、擁有者、文件大小、數據塊信息。數據塊用來存儲實際的內容。當打開一個文件時,程序會將物理磁碟上的文件數據塊讀入到內存,然後通過文件指針的移動讀取內存中的文件數據。
相關函數:
file
*fopen(
char
*file,
char
*open_mode
);
//打開文件,讀文件到內存,返迴文件信息結構指針
int
fread(
char
s,
int
size,
int
num,
file
*fp
);
//按位元組讀取文件內容到s中
int
fwrite(
char
s,
int
size,
int
num,
file
*fp
);
//按位元組將s地址中的數據寫到文件中
char
*fgets(
char
*s,
int
max_size,
file
*fp);
//讀一行數據到緩沖區s中
int fseek(
file
*fp,
long
offset,
int
whence);
//移動文件指針到指定位置
void
rewind(file
*fp);
//回到文件頭
long
ftell(file
*fp);
//得到當前文件偏移位置
fclose(fp);
//關閉文件,刷新緩存到物理磁碟上