2011-10-28 28 views
5

Tôi đã viết một chương trình trong các cửa sổ sẽ phát âm thanh nhị phân được gửi tới nó qua stdin, tôi gọi nó là aplay (giống như chương trình linux). Sau đó tôi đã viết một chương trình riêng biệt như sauCác ống Windows ở chế độ nhị phân

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); 
} 

Vì lý do nào đó, đường ống dường như không hoạt động. Nếu tôi thay đổi aplay của tôi để mở các tập tin sóng của chính nó trong chế độ văn bản nó âm thanh giống như khi tôi làm điều đó thông qua các đường ống, nếu tôi mở tập tin sóng ở chế độ nhị phân nó chơi hoàn hảo. Có ai biết làm thế nào tôi có thể sửa lỗi này?

Trả lời

4

Nếu bạn bao gồm các tập tin tiêu đề

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

bạn có thể chuyển đổi chế độ với

_setmode(_fileno(stdin), _O_BINARY); 
Các vấn đề liên quan