2016-01-17 6 views
2

Я начал программирование на C несколько дней назад. В настоящее время я использую книгу «C-программирование для абсолютных новичков». В конце главы printf используется пример, чтобы сделать звуковой сигнал компьютера более одного раза, но он только один раз подает звуковой сигнал, вот код: printf("\n\a\n\a\n\a\n\aSkip a few lines, and beep a few beeps. \n\n\n");.Несколько « a» не работают

Я запускаю Windows 10 64-бит и используя Code :: Blocks 13.12.

Редактирование 1: Я хочу, чтобы звук проходил через динамики (наушники/гарнитуру) через окна.

Редактирование 2: Похоже, все звуки воспроизводятся сразу, а последний - единственный, который завершается, как я могу это предотвратить?

+6

Я не вижу _any_ '\ b' в вашем' printf() 'statement. –

+5

Я подозреваю, что он не останавливается на звуковой сигнал, поэтому все звуковые сигналы сразу воспроизводятся. –

+0

@AlexYan У нас все еще есть случаи с динамиком. –

ответ

4

Звуковые сигналы выдаются слишком быстро, поэтому последующие звуковые сигналы отменяют предыдущие, и вы услышите только один звук.

Вы можете использовать Windows API, Sleep функцию, чтобы сделать паузу в течение заданного числа миллисекунд:

#include <windows.h> 

... 

for (int i = 0; i < 4; ++i) { 

    // Issue a newline and a beep. 
    printf("\n\a"); 

    // Pause for half a second. 
    Sleep(500); 

} 

В системах POSIX, вы можете использовать функцию nanosleep, разрешение которого в микросекундах:

#include <time.h> 

... 

struct timespec delay; 
delay.tv_sec = 0; 
delay.tv_usec = 500000; 
nanosleep(&delay, NULL); 
+1

Это действительно первый раз, когда я слышу о . Я должен сделать больше исследований, чтобы выяснить больше команд, спасибо большое :) –

+1

@ H.Malkawi: [MSDN] (https://msdn.microsoft.com/en-us/library/windows/desktop/ff818516 (v = vs.85) .aspx) - отличный ресурс для изучения Windows API. –

Смежные вопросы