我试图用C改变WAV文件因子。 我需要使用因子i来从用户获取多个所有字节。 我写了一个函数读取2个字节并返回一个短的int类型。 但我可以将OUTPUT文件作为我的示例程序中的OUT文件。 请帮助**附加代码
void modify_data(unsigned char*buffer, char *name, long filelen, float factor){
short temp=0;
char byte[2]={0};
FILE *fp=NULL;
int i,big=0;
unsigned int check=0;
char *str=strtok(name,".");
sprintf(name,"%s_modified.wav",name);
fp=fopen(name,"wb");
fwrite(buffer,1,44,fp);
for (i=44;i<filelen;i+=2){
check=0;
temp= (short)read_short(i,buffer);
printf("%hu\n",temp);
/*check=(int)(temp | check);
check=check*factor;
printf("%d\n",check);
//getchar();
*/
if ((roundf(temp*factor))>= MAX16BIT){
temp=MAX16BIT;
printf("True\n");
}
else {
if ((roundf(temp*factor)) <= -1*MAX16BIT) temp=-1*MAX16BIT;
else temp=(short)round((double)(temp*factor));
}
byte[0] = (temp & 0xFF);
byte[1] = ((temp & 0xFF00)>>8);
fwrite(byte,1,2,fp);
temp=0;
}
fclose(fp);
}