已结贴√

问题点数:20 回复次数:5

c读取wav文件,头文件后面的所有数据

#include "stdlib.h"

#include "stdio.h"

int main()

{

int i;   //用作循环计数

unsigned char ch[100];  //用来存储wav文件的头信息

FILE *fp;

fp=fopen("C:\\Users\\Lenovo\\Desktop\\wavread\\1.wav","rb");//为读,打开一个wav文件

if((fp=fopen("C:\\Users\\Lenovo\\Desktop\\wavread\\1.wav","rb"))==NULL) //若打开文件失败,退出

{

printf("can't open this file\n");

exit(0);

}

/**********输出wav文件的所有信息**********/

printf("该wav文件的所有信息:");

for(i=0;i<58;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]);

}

/*********RIFF WAVE Chunk的输出*********/

printf("\n\nRIFF WAVE Chunk信息:");

//输出RIFF标志

printf("\nRIFF标志:");

for(i=0;i<4;i++)

{

printf("%x ",ch[i]);

}

//输出size大小

printf("\nsize:ox");

for(i=7;i>=4;i--) //低字节表示数值低位,高字节表示数值高位

{

if(ch[i]<16)

printf("0%x",ch[i]);

else

printf("%x",ch[i]);

}

//输出WAVE标志

printf("\nWAVE标志:");

for(i=8;i<12;i++)

{

if(ch[i]<16)

printf("0%x ",ch[i]);

else

printf("%x ",ch[i]);

}

/*******Format Chunk的输出*******/

printf("\n\nFormat Chunk信息:");

//输出fmt 标志

printf("\nfmt 标志:");

for(i=12;i<16;i++)

{

if(ch[i]<16)

printf("0%x ",ch[i]);

else

printf("%x ",ch[i]);

}

//输出size段

printf("\nsize:ox");

for(i=19;i>15;i--)

{

if(ch[i]<16)

printf("0%x",ch[i]);

else

printf("%x",ch[i]);

}

//输出编码方式

printf("\n编码方式:ox");

for(i=21;i>19;i--)

{

if(ch[i]<16)

printf("0%x",ch[i]);

else

printf("%x",ch[i]);

}

//输出声道数目

printf("\n声道数目:ox");

for(i=23;i>21;i--)

{

if(ch[i]<16)

printf("0%x",ch[i]);

else

printf("%x",ch[i]);

}

if(ch[i+1]==1)   //1表示单声道,2表示双声道

printf(" 单声道");

else

printf(" 双声道");

//输出采样频率

printf("\n采样频率:ox");

for(i=27;i>23;i--)

{

if(ch[i]<16)

printf("0%x",ch[i]);

else

printf("%x",ch[i]);

}

//输出每秒所需字节数

printf("\n每秒所需字节数:ox");

for(i=31;i>27;i--)

{

if(ch[i]<16)

printf("0%x",ch[i]);

else

printf("%x",ch[i]);

}

//输出数据块对齐单位

printf("\n数据块对齐单位:ox");

for(i=33;i>31;i--)

{

if(ch[i]<16)

printf("0%x",ch[i]);

else

printf("%x",ch[i]);

}

//输出每个采样所需bit数

printf("\n每个采样所需bit数:ox");

for(i=35;i>33;i--)

{

if(ch[i]<16)

printf("0%x",ch[i]);

else

printf("%x",ch[i]);

}

//输出附加信息

if(ch[16]==18)  //若Format Chunk的size大小为18,则该模块的最后两个字节为附加信息

{               //若为16,则无附加信息

printf("\n附加信息:ox");

for(i=37;i>35;i--)

{

if(ch[i]<16)

printf("0%x",ch[i]);

else

printf("%x",ch[i]);

}

}

/*******Fact Chunk的输出*******/

printf("\n\nFact Chunk信息:");

//输出fact标志

printf("\nfact标志:");

for(i=38;i<42;i++)

{

if(ch[i]<16)

printf("0%x ",ch[i]);

else

printf("%x ",ch[i]);

}

//输出size

printf("\nsize:ox");

for(i=45;i>41;i--)

{

if(ch[i]<16)

printf("0%x",ch[i]);

else

printf("%x",ch[i]);

}

//输出data段数据

printf("\ndata段数据:");

for(i=46;i<50;i++)

{

if(ch[i]<16)

printf("0%x ",ch[i]);

else

printf("%x ",ch[i]);

}

/*******Data Chunk的输出*******/

printf("\n\nData Chunk信息:");

//输出data标志

printf("\ndata标志:");

for(i=50;i<54;i++)

{

if(ch[i]<16)

printf("0%x ",ch[i]);

else

printf("%x ",ch[i]);

}

//输出数据大小

printf("\n数据大小:ox");

for(i=57;i>53;i--)

{

if(ch[i]<16)

printf("0%x",ch[i]);

else

printf("%x",ch[i]);

}

printf("\n");

fclose(fp);

}

C语言读取wav文件中特定内容6,c读取wav文件,头文件后面的所有数据相关推荐

  1. java 更改excel文件名称_根据Excel文件中的内容,修改指定文件夹下的文件名称

    问题:根据Excel文件中内容,把文件名称由第2列,改为第1列.比如:把文件"123.jpg"修改为"1.jpg". aaarticlea/png;base64 ...

  2. R语言读取txt文件中的内容

        在RGui中读取.txt文件中的内容,采用函数read.table("xxx.txt",head=TRUE|FALSE); 其中head=TRUE表示含有属性的标题,hea ...

  3. python读取字符串指定位置字符_python读取txt文件中特定位置字符的方法

    python读取txt文件中特定位置字符的方法 如下所示: # -*- coding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding(' ...

  4. python读取一行的函数_Python linecache.getline()读取文件中特定一行的脚本

    Python linecache.getline()读取文件中特定一行的脚本 比如: Code highlighting produced by Actipro CodeHighlighter (fr ...

  5. QFile修改替换文件中特定的内容

    前言 一开始在做linux下的qt相关开发时,经常重复着灵活快速的修改文件中的某个内容,所以特此记录,下次直接复制粘贴代码. 思路是,先读取文件中的内容存在QString中,然后提取出我们要修改的那一 ...

  6. CFileDialog、CStdioFile读取文件中的内容,每行按空格依次读入

    CFileDialog.CStdioFile读取文件中的内容,每行按空格依次读入 注: 1.该文件为固定为3列的小数txt文件,且数字之间以空格隔开 2.CFileDialog 与 CStdioFil ...

  7. Linux C语言实现清除文件中的内容

    有时候我们的程序把一个文件中的内容清空,然后重新写,比如我最近写的一个性能检测小工具,我需要把检测到的内容写入到一个日志文件,然后将这些日志发送出去,然后我再把新的日志写进来,这时候就遇到一个问题,如 ...

  8. Android 读取本地txt文件中的内容

    Android 读取本地txt文件中的内容 import java.io.BufferedReader; import java.io.File; import java.io.FileInputSt ...

  9. 使用php读取文件中的内容,以表格的形式进行输出。

    使用php读取文件中的内容,以表格的形式进行输出. 读取文件中的内容,以表格的形式输出内容,地址以小写及链接的形式进行显示. file_get_contents (文件名):读取文件中的内容 expl ...

  10. Java基础,读取文件中的内容写入到另外一个文件。

    有两种方法,首先: 第一种方法:一次性全部读取所有文件内容(这里Arrays.sort(b)代表对字节进行排序,如果不需要进行删除即可) import java.io.FileInputStream; ...

最新文章

  1. 【c语言】蓝桥杯算法提高 输出三个整数的最大数
  2. Install vsftpd on centos
  3. FastReport的模板文件frx文件啊怎样打开并编辑修改
  4. 使用Java的@Deprecated前瞻
  5. Tomcat 中文路径乱码
  6. 如何备份数据库的某张表_详解mysql数据库如何用mysqldump实现单表备份
  7. wpf image控件循环显示图片 以达到动画效果 问题及解决方案
  8. Android 在Activity界面下滑动ViewPager实现两个Fragment之间的切换?
  9. axis2远程调用webservice例子(返回xml用dom4j解析)
  10. python整型图_基于PIL的图像整形与裁剪矢量化
  11. 用java判断x奇或偶_改善java程序——用偶判断,不用奇判断
  12. windows下解压tar.gz文件
  13. 如何制作互联网区块链PPT模板?
  14. 第三方登陆(一)微信登陆
  15. 雅虎邮箱客户端服务器设置
  16. 他是程序员出身,如今身价上亿!一人干出了美国版的:携程、安居客、看准网!...
  17. Java实现新浪微博第三方登录
  18. HDU 6638 Snowy Smile(线段树)
  19. 解决ping值波动,一下20ms,一下上千ms的问题。
  20. 注册中国移动物联网平台账号

热门文章

  1. 日本性价比旅馆分析报告
  2. json数据快速格式化
  3. 禁用笔记本电脑自带键盘
  4. 串口RS232的学习
  5. Fake Location(安卓)
  6. 灌篮高手总决赛下载地址,都是pdf文件,黑白的,很清晰
  7. 2022最新PHP微信/QQ域名防封直连系统源码
  8. 大连居民楼爆炸原因查明 责任人厌世开燃气阀门自杀
  9. 渗透测试实验_安装Windows 2003 企业版
  10. 微信小程序实现扫一扫功能