#include #include #include #define HEADERSIZE 44 int main(int argc, char *argv[]) { unsigned long file_size_input; unsigned int i,j; FILE *fp, *fp2; signed short *data_main; unsigned long datasize; unsigned long fmtchunksize; unsigned short fmtid; unsigned short channelnum; unsigned long samplingrate; unsigned long dataspeed; unsigned short blocksize; unsigned short bit_per_sample; unsigned long fmtsize; signed short temp_s_short; unsigned char header_buf[HEADERSIZE]; if((fp = fopen(argv[1], "rb")) == NULL){ fprintf(stderr, "Error: %s could not read.", argv[1]); return NULL; } fp2=fopen(argv[2], "wb"); fseek( fp, 0, SEEK_END ); file_size_input=ftell(fp); fseek(fp, 0, SEEK_SET ); printf( "ファイルのサイズ:%lu バイト", file_size_input ); fclose(fp); datasize=file_size_input+ HEADERSIZE - 8; fmtchunksize=16; fmtid=1; channelnum=2; //モノラルorステレオ samplingrate=8000; //サンプリング周波数 bit_per_sample=16; dataspeed=channelnum*samplingrate*bit_per_sample/2; blocksize=channelnum*bit_per_sample/2; header_buf[0] = 'R'; header_buf[1] = 'I'; header_buf[2] = 'F'; header_buf[3] = 'F'; memcpy(header_buf + 4, &datasize, sizeof(datasize)); header_buf[8] = 'W'; header_buf[9] = 'A'; header_buf[10] = 'V'; header_buf[11] = 'E'; header_buf[12] = 'f'; header_buf[13] = 'm'; header_buf[14] = 't'; header_buf[15] = ' '; memcpy(header_buf + 16, &fmtchunksize, sizeof(fmtchunksize)); memcpy(header_buf + 20, &fmtid, sizeof(fmtid)); memcpy(header_buf + 22, &channelnum, sizeof(channelnum)); memcpy(header_buf + 24, &samplingrate, sizeof(samplingrate)); memcpy(header_buf + 28, &dataspeed, sizeof(dataspeed)); memcpy(header_buf + 32, &blocksize, sizeof(blocksize)); memcpy(header_buf + 34, &bit_per_sample, sizeof(bit_per_sample)); header_buf[36] = 'd'; header_buf[37] = 'a'; header_buf[38] = 't'; header_buf[39] = 'a'; memcpy(header_buf + 40, &file_size_input, sizeof(file_size_input)); fwrite(header_buf, sizeof(unsigned char), HEADERSIZE, fp2); j=file_size_input/2; fp = fopen(argv[1], "rb"); for(i=0;i