资源简介

使用方法:将要处理的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


评论

共有 条评论