資源簡介
使用方法:將要處理的wav文件放在input文件夾,運行exe文件,生成的文件在output文件夾中。大家可以根據此程序進行修改以現在更加豐富的功能。建議大家熟悉wav文件的文件頭內容。

代碼片段和文件信息
#include?
#include?
#include?
#include??
#include??
#include??
#include??
#include??
using?namespace?std;
struct?file_name_list
{
???????char?fileName[260];
}file_name_list[1000];
int?number=0;//input文件數目?
//string?sRoot?=?“F:\\“;?
//string?sSuffix?=?“\\大三下\\信安大賽\\代碼\\any_wav_cut\\input\\*.*“;?//?后綴?
string?sRoot?=?““;?
string?sSuffix?=?“input\\*.*“;?//?后綴?
void?Move(string?sPath);?
int?get_filelist()????????????????????????????????????
{?
?????Move(sRoot);?
}?
void?Move(string?sPath)?
{?
?????struct?_finddata_t?file;?
?????long?hFile?hFileNext;?
?????string?sPathLast?=?sPath?+?sSuffix;?//?sPathLast?=?“c:\test\*.*“?
?????cout< ?????hFile?=?_findfirst(sPathLast.c_str()?&file);?
?????if(hFile?==?-1)?
?????{?
??????????????cout<<“文件不存在.“< ?????}?
?????else
?????{?
?????????//cout< ?????}?
?????hFileNext?=?_findnext(hFile?&file);?
?????while(_findnext(hFile?&file)?==?0)?
?????{?
???????????if(file.attrib?==?_A_SUBDIR)?
???????????{?
????????????????string?sAddPath?=?sPath;?sAddPath?+=?“\\“;?
????????????????sAddPath?+=?file?.?name;?
????????????????//cout<<“目錄:“< ????????????????Move(sAddPath);?
???????????}?
???????????else{?
?????????????????string?sAddPath?=?sPath;?
?????????????????sAddPath?+=?“\\“;?
?????????????????sAddPath?+=?file?.?name;?
?????????????????//cout<<“文件:“< ?????????????????//cout< ?????????????????for(int?j=0;j<260;j++)
?????????????????{file_name_list[number].fileName[j]=file.name[j];}
?????????????????number=number+1;
???????????}?
?????}?
}?
int?wav_cut(char?filename[]int?time)
{
????char?fileName[260];
????printf(“%d\n“time);
????unsigned?char?ch[100];//用來存儲wav文件的頭信息
????FILE?*fp;
????sprintf(fileName“input/%s“?filename);
????printf(“%s\n“fileName);
????fp=fopen(fileName“rb“);//為讀,打開一個wav文件
????printf(“%s\n“fileName);
????if(fp==NULL)?//若打開文件失敗,退出
{
printf(“can‘t?open?this?file\n“);
system(“PAUSE“);
????????exit(0);
}
for(int?i=0;i<100;i++)
{
????????ch[i]=fgetc(fp);??//每次讀取一個字符,存在數組ch中
????????if(i%16==0)??????//每行輸出16個字符對應的十六進制數
printf(“\n“);
if(ch[i]<16)?????//對小于16的數,在前面加0,使其用8bit顯示出來
printf(“0%x?“ch[i]);
else
????printf(“%x?“ch[i]);
????}
????int?data_flag;
????for(int?i=32;i<100;i++)//find?data_falg
????{
?????????if(ch[i]==‘t‘&&ch[i-1]==‘a‘&&ch[i-2]==‘d‘&&ch[i+1]==‘a‘)
?????????{
?????????????data_flag=i-2;
?????????????break;
?????????}
????}
????printf(“data_flag:%d\n“data_flag);
int?bytepermin=*((int*)&ch[28]);//ch[31]*(16*16*16*16*16*16)+ch[30]*(16*16*16*16)+ch[29]*(16*16)+ch[28];???//每秒字節數?
printf(“\nbytepermin:%d\n“bytepermin);
int?datasize=*((int*)&ch[data_flag+4]);//ch[data_falg+7]*(16*16*16*16*16*16)+ch[data_falg+6]*(16*16*16*16)+ch[data_falg+5]*(16*16)+ch[data_falg+4];//data長度?
printf(“\ndatasize:%d\n“
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5409??2014-04-09?18:26??any_wav_cut\any_wav_cut.cpp
?????文件????1320050??2014-04-09?21:45??any_wav_cut\any_wav_cut.exe
?????文件????9360098??2014-07-02?15:09??any_wav_cut\input\let.wav
?????目錄??????????0??2014-07-22?20:56??any_wav_cut\input
?????目錄??????????0??2014-07-22?20:56??any_wav_cut\output
?????目錄??????????0??2014-07-22?20:56??any_wav_cut
-----------?---------??----------?-----??----
?????????????10685557????????????????????6
評論
共有 條評論