Как сделать звуковой сигнал, используя escape-символ "\ a"? - PullRequest
10 голосов
/ 02 октября 2010

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

#include <stdio.h>
int main()
{ 
    printf("\a");
    return 0;
 }

Не могли бы вы рассказать, как использовать \a для получения звукового сигнала с помощью программы на Си?

Ответы [ 6 ]

3 голосов
/ 02 октября 2010

Единственное, что не так ( наполовину неправильно ) с вашей программой, это main подпись.

Чтобы быть на 100% переносимым, оно должно быть int main(void) или int main(int argc, char **argv) или эквивалентным: int main() не эквивалентно.


И я бы тоже напечатал '\n' или очистил бы выходной буфер вместо того, чтобы полагаться на время выполнения, автоматически стирая все буферы для меня, но ваша программа должна звучать как есть. Если это не так, проблема в другом месте, а не с C.

#include <stdio.h>
int main(void)
{
    printf("\a\n");
    return 0;
}
1 голос
/ 02 октября 2010

Я согласен с @Steve Jessop. Люди пойдут на все, чтобы держать свои компьютеры в покое.

В Windows: в качестве альтернативы "\ a", вы можете использовать команду звукового сигнала WinAPI. Если вы используете Windows 7, это может работать не так, как ожидалось.

Функция звукового сигнала (Windows)

0 голосов
/ 02 октября 2018

Пожалуйста, перечислите свою операционную систему, как вы выполняли свой код, и если на вашем компьютере есть звуковой сигнал.

Если вы используете Windows, возможно, это вопросы и ответы Как сделать звуковой сигнал в C наВам поможет Windows? .

Если вы используете настольный Linux-дистрибутив с графическим интерфейсом, эмулятор терминала, такой как gnome-терминал или xfce4-терминал, должен проверить параметр предпочтения bell.Затем убедитесь, что ваш динамик работает.

Код ниже хорошо работает для меня:

/* name: bell.c
 * run: gcc bell.c && ./a.out
 */

#include <stdio.h>

int main(void) {
    printf("\a");
    return 0;
}

Кстати, ваш код не проблема.

0 голосов
/ 13 июня 2016

Я обычно использую другой способ получить звуковой сигнал, он работает на 100% на Windows 7.

    int x=7; //7 is beep sound other numbers may show emoji and characters
    printf("%c",x);
0 голосов
/ 07 августа 2013

Если вы используете Windows, Windows-версии делают звуковой сигнал совсем по-разному.Некоторые из них позволяют это и работают нормально, но некоторые версии Windows этого не делают.В некоторых окнах это работает именно в этом случае, если у вас есть встроенный динамик материнской платы.Но некоторые другие окна работают без встроенного динамика материнской платы, напрямую со звуковой карты (это было бы неплохо!).

Если вам повезет и вы используете соответствующую версию Windows, beep / Beep / printf ("\ a") будет работать (на внутреннем динамике (если есть) или в лучшем случае через звуковую карту).Но если вы используете другую версию Windows, она не будет работать.Если на вашем компьютере все в порядке, компьютер вашего друга / члена семьи будет молчать, и он / она будет думать, что вы написали плохую программу :-D, но не.

Мой совет, что вы должны использовать библиотеку дляаудио.Это простой, кроссплатформенный, и он будет работать всегда все время на всех компьютерах и т. Д. Например, Allegro_v4, Allegro_v5, SDL (Simple DirectMedia Layer) или что-то в этом роде.Эти библиотеки прекрасно работают с OpenGL / DirectX, и с этими библиотеками вы можете загружать изображения, воспроизводить видео и тому подобное.Родной OpenGL / GLUT / DirectX не может делать такие вещи.

0 голосов
/ 03 мая 2013
#include<stdio.h>
#include<windows.h>

int main()
{   
    Beep(1000, 1000); /* you can use any number starting from 250, but make sure you use                           it both times


    return 0;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...