You are writing data to opened output file from input
fwrite(&input, sizeof(int), 16, output);
I am not sure, if you can use FILE pointer this way. I would do that this way
unsigned char buf[64];
fread(&buf, sizeof(char), 64, input);
fwrite(&buf, sizeof(char), 64, output);
Also open files in binary mode: fopen("in.wav", "rb")
and fopen("out.wav", "wb")