64,681
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
#include <windows.h>
struct wav_head
{
unsigned long wav_id;
unsigned int wav_size;
unsigned int type;
unsigned int fmt_id;
unsigned int fmt_size;
unsigned short format_tag;
unsigned short channels;
unsigned int sample_per_sec;
unsigned int avg_bytes_per_sec;
unsigned short block_align;
unsigned short bits_per_sample;
//unsigned short attach_info;
unsigned int data_id;
unsigned int date_size;
};
int main()
{
char *pbuf;
int i,len;
FILE *fp;
struct wav_head *test;
test=(struct wav_head *)malloc(sizeof(struct wav_head));
len=55552;
pbuf=(char *)malloc(55552);
fp=fopen("test2.wav","w");
test->wav_id=0x46464952; //RIFF
test->wav_size=len+44-8;
test->type=0x45564157; //WAVE
test->fmt_id=0x20746d66; //fmt
test->fmt_size=0x10;
test->format_tag=0x1;
test->channels=0x1;
test->sample_per_sec=0x3e80;
test->avg_bytes_per_sec=0x7d00;
test->block_align=0x2;
test->bits_per_sample=0x10;
test->data_id=0x61746164; //data
test->date_size=len;
for(i=0;i<len;i++)
{
//pbuf[i]=rand()%256;
pbuf[i]=i%256;
}
fwrite(test,sizeof(struct wav_head),1,fp);
fwrite(pbuf,sizeof(char),len,fp);
char* wavwav=new char[sizeof(struct wav_head)+55552];
memcpy(wavwav , (char*)test ,sizeof(wav_head));
memcpy(wavwav + sizeof(wav_head) ,(char*)pbuf,55552);
sndPlaySound(NULL,SND_MEMORY|SND_ASYNC);//stop the sound if there is a sound
sndPlaySound((const char *)&test,SND_MEMORY|SND_ASYNC);//return immediately
free(pbuf);
free(test);
fclose(fp);
while(1);
return 0;
}