2011-10-28 23 views
5

Stdin üzerinden kendisine gönderilen ikili sesi çalacak pencerelerde bir program yazdım, onu (linux programı gibi) seslendirdim. ses hepsi berbat çıkıyor çünkü Nedenseİkili modda Windows boruları

FILE * f = popen("aplay.exe", "wb"); 
FILE * song = fopen("C:/Users/Ray/Dropbox/DJ Automica 2/Debug/raymonster 5.wav", "rb"); 
while(1) 
{ 
    byte buff[4096]; 
    fread(buff, 4, 1024, song); 
    fwrite(buff, 4, 1024, f); 
} 

şöyle Sonra ayrı bir program yazdım, boru, ikili modda çalışıyor gibi görünmüyor. Dalga modunu metin modunda kendi başıma açmak için aplay'ımı değiştirirsem, borudan yaptığım zamanki gibi ses çıkarır, dalga dosyasını ikili modda açarsam mükemmel çalışır. Bunu nasıl düzeltebileceğimi bilen var mı?

cevap

4

Eğer

_setmode(_fileno(stdin), _O_BINARY); 
ile modlar arasında geçiş yapabilirsiniz

#include <fcntl.h> 
#include <io.h> 

başlık dosyası eklerseniz