#include <stdio.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
int main() {
int x,y,i;
char ChunkID[5];
int ChunkSize;
char Format[5];
char Subchunk1ID[5];
int Subchunk1Size;
short AudioFormat;
short NumChannels;
int SampleRate;
int ByteRate;
short BlockAlign;
short BitsPerSample;
char Subchunk2ID[5];
int Subchunk2Size;
int Data;
x=open("./ja1.wav",O_RDONLY,777);
y=read(x,ChunkID,4);
ChunkID[y]=0;
y=read(x,&ChunkSize,4);
y=read(x,Format,4);
Format[y]=0;
y=read(x,Subchunk1ID,4);
Subchunk1ID[y]=0;
y=read(x,&Subchunk1Size,4);
y=read(x,&AudioFormat,2);
y=read(x,&NumChannels,2);
y=read(x,&SampleRate,4);
y=read(x,&ByteRate,4);
y=read(x,&BlockAlign,2);
y=read(x,&BitsPerSample,2);
y=read(x,Subchunk2ID,4);
Subchunk2ID[y]=0;
y=read(x,&Subchunk2Size,4);
FILE *f1;
f1=fopen("./ja2.wav","w");
fprintf(f1,"%s",ChunkID);
fprintf(f1,"%x",ChunkSize);
fprintf(f1,"%s",Format);
fprintf(f1,"%s",Subchunk1ID);
fprintf(f1,"%x",Subchunk1Size);
fprintf(f1,"%x",AudioFormat);
fprintf(f1,"%x",NumChannels);
fprintf(f1,"%x",SampleRate);
fprintf(f1,"%x",BlockAlign);
fprintf(f1,"%x",BitsPerSample);
fprintf(f1,"%s",Subchunk2ID);
fprintf(f1,"%x",Subchunk2Size);
for(i=0;i<227328;i++) {
y=read(x,&Data,4);
fprintf(f1,"%x",Data);
}
return 0;
}
------------------------------------------------------------------------------------------------
염치 불구하고 또 질문드리네요...
현재 문자는 출력하고 숫자는 주소가 출력되게 되어있는데요..
현재 출력은 RIFF0006f024WAVEfmt1011ac........
이렇게 나가구요.. 이렇게 텍스트로 출력되는것을
바꿔서 wav파일로 출력이 되게 만드는 것입니다. (cp와 같은..) - 재생이 가능하도록...
숫자부분의 0006f024 이 주소값을 스택에 0x24 0xf0 0x06 0x00 이렇게 삽입하면 될 것 같은데..
현재는
$xxd ja2.wav
5249 4646 3078 3030 3036 .....
이렇게 되어있는데요 ...
$xxd
5249 4646 24f0 0600 ....
이런식으로 되게 말입니다
fprintf 용례를 찾아봐도... 잘 모르겠어서.. 질문드립니다..