gpt4 book ai didi

c - C中的wav文件处理

转载 作者:太空宇宙 更新时间:2023-11-04 07:38:55 25 4
gpt4 key购买 nike

我想读取一个 wav 文件并根据采样率更改其位(从 16 到 32)。但是我的程序没有复制整个文件。源文件为 175KB,而目标文件仅为 2KB。每个样本的位数从头开始为 34 个字节。

我的代码是:-

#include<stdio.h>
void main()
{
FILE *fp,*fo;
char ch,ch1;
int j=0,s=0,arr[4],k=0;
long int i=0;
fp=fopen("msoft.wav","rb");
fo=fopen("dest.wav","wb");
while(1)
{
i=i+1;
ch=fgetc(fp);
if(ch==EOF)break;
else
{
if(i==34)
{
while(i<=35)
{
ch=fgetc(fp);
arr[j]=ch;
i++;
j++;
}
for(k=0;k<2;k++)
printf("\n%d",arr[k]);
s=arr[1];
s=(s<<8)+arr[0];
printf("\n\nS=%d",s);
s=s*2;
printf("\n new s=%d",s);
ch1=s & 255;
fputc(ch1,fo);
ch1=s & (255<<8);
fputc(ch1,fo);
}
else
fputc(ch,fo);
}
}
printf("\nOk");
getch();
}

请帮忙。

最佳答案

fgetc 返回一个 int,而不是一个 char。您绝对需要将其返回值保存到 int 中,否则文件中的普通 0EOF 之间没有区别。

查看相关问题: fgetc does not identify EOF

关于c - C中的wav文件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6034866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com