?? read_dat.cpp
字號:
/**************************************************************************************************
功能: 包含對于 .dat 文件的讀操作
讀出句子數
讀出某句的長度
讀出某句的特征
作者: 陳一寧
修改記錄:
***************************************************************************************************/
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
/*========================================================================================================================
函數名稱: Read_Length
函數功能: 從,dat文件中讀出一句話的特征幀數或者是字節數
函數性質: 公共函數
輸入參數: char *File_Name 文件名
short Sentence_Num 第幾句話
輸出參數: 無
返回值: 該句話的幀數
備注:
基本思路:
========================================================================================================================*/
long Read_Length(char *File_Name,short Sentence_Num)
{
FILE *Fp;
Fp = fopen(File_Name,"rb");
if(Fp==NULL)
return 0;
long Off_Set;//每句話的起始地址
long FrameAmount;//每句話的幀數或字節數
fseek(Fp,200,SEEK_SET);//索引區從200開始
fseek(Fp,2*sizeof(long)*Sentence_Num,SEEK_CUR);//到達該句子對應的索引處
fread(&Off_Set,sizeof(long),1,Fp);
fread(&FrameAmount,sizeof(long),1,Fp);
fclose(Fp);
return FrameAmount;
}
/*========================================================================================================================
函數名稱: Read_Dat
函數功能: 從,dat文件中讀出一句話的特征
函數性質: 公共函數
輸入參數: char *File_Name 文件名
short Sentence_Num 第幾句話
short Feature_Order 特征的維數
輸出參數: float **Feature 該句的特征
返回值: 該句話的幀數
備注:
基本思路:
========================================================================================================================*/
long Read_Dat(char *File_Name,short Sentence_Num,float **Feature,short Feature_Order)
{
FILE *Fp;
Fp = fopen(File_Name,"rb");
if(Fp==NULL)
return 0;
long Off_Set;//每句話的起始地址
long FrameAmount;//每句話的幀數
fseek(Fp,200,SEEK_SET);//索引區從200開始
fseek(Fp,2*sizeof(long)*Sentence_Num,SEEK_CUR);//到達該句子對應的索引處
fread(&Off_Set,sizeof(long),1,Fp);
fread(&FrameAmount,sizeof(long),1,Fp);
fseek(Fp,Off_Set,SEEK_SET);
for(short iFrameNum=0;iFrameNum<FrameAmount;iFrameNum++)
{
fread(Feature[iFrameNum],sizeof(float),Feature_Order,Fp);
}
fclose(Fp);
return FrameAmount;
}
/*========================================================================================================================
函數名稱: Read_Wave_Dat
函數功能: 從,dat文件中讀出一句話的采樣點
函數性質: 公共函數
輸入參數: char *File_Name 文件名
short Sentence_Num 第幾句話
輸出參數: short *Wave_Dat 該句的采樣
返回值: 該句話的字節數
備注:
基本思路:
========================================================================================================================*/
long Read_Wave_Dat(char *File_Name,short Sentence_Num,short *Wave_Dat)
{
FILE *Fp;
Fp = fopen(File_Name,"rb");
if(Fp==NULL)
return 0;
long Off_Set;//每句話的起始地址
long SentenceLength_Byte;//每句話的字節數
fseek(Fp,200,SEEK_SET);//索引區從200開始
fseek(Fp,2*sizeof(long)*Sentence_Num,SEEK_CUR);
fread(&Off_Set,sizeof(long),1,Fp);
fread(&SentenceLength_Byte,sizeof(long),1,Fp);
fseek(Fp,Off_Set,SEEK_SET);
fread(Wave_Dat,SentenceLength_Byte/2,sizeof(short),Fp);
fclose(Fp);
return SentenceLength_Byte/2;
}
/*========================================================================================================================
函數名稱: Read_Sentence_Amount
函數功能: 從,dat文件中讀出共有多少句話
函數性質: 公共函數
輸入參數: char *File_Name 文件名
輸出參數: 無
返回值: 句子數
備注:
基本思路:
========================================================================================================================*/
short Read_Sentence_Amount(char *File_Name)
{
short Sentence_Amount;
FILE *Fp;
Fp = fopen(File_Name,"rb");
if(Fp==NULL)
return 0;
//讀入該特征文件中包含的句子總數
fseek(Fp,198,SEEK_SET);
fread(&Sentence_Amount,sizeof(short),1,Fp);
fclose(Fp);
return Sentence_Amount;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -