2010-10-02 6 views
10

Si escribo el siguiente programa, no se emite un pitido al ejecutar el código.Cómo producir un sonido de pitido con el carácter de escape " a"?

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

¿Me puede decir cómo utilizar \a para producir sonido de aviso mediante el programa de C?

+3

eso depende de la terminal, que depende de cómo se está ejecutando el programa. Si stdout se redirige a un archivo, no se emitirá ningún sonido hasta que aparezca el archivo. Aun así, no todos los terminales realmente emiten un pitido cuando reciben un carácter ascii BEL. Por mi parte, lo deshabilito si puedo. Para el caso de las máquinas utilizadas en el trabajo, generalmente desconecto el cable del altavoz interno de la PC y silencioso el resto del sonido, excepto cuando tengo los auriculares enchufados. Buena suerte para obtener un pitido de eso ... –

+1

Lo más trágico Los pitidos son los de las computadoras portátiles, que se emiten a un volumen increíble a través de los altavoces "normales". –

+2

Por cierto, usted * debe * ejecutar el programa desde un terminal, ya que el pitido cuando imprime '\ a' es una característica del terminal (no la característica C ni la del sistema operativo). –

Respuesta

3

Lo único malo (medio incorrecto) con su programa es main firma.

Para ser 100% portátil debe ser int main(void) o int main(int argc, char **argv) o equivalente: int main() no es equivalente.


Y me imprimo un '\n' también, o vaciar el búfer de salida en lugar de confiar en el tiempo de ejecución de todos los tampones de lavado para mí de forma automática, pero su programa debe sonar la campana tal como es. Si no lo hace, el problema está en otra parte, no con C.

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

Podría al menos admitir que C99 existe, incluso si cree que el interlocutor no lo está usando ;-) –

+0

Incluso en 'C99',' int main() 'no es equivalente a una de las 2 definiciones publicadas. – pmg

+0

Está en una definición. No está en otras declaraciones. 6.7.5.3/10 y/14. Ambos significan "sin parámetros", y 5.1.2.2.1/1 especifica que 'main' sin parámetros está bien. Solo da una de las dos formas de hacerlo como código de ejemplo, pero no * pienso * significa dar a entender que la otra forma de hacerlo es inaceptable. –

1

Estoy de acuerdo con @Steve Jessop. La gente hará todo lo posible para mantener sus computadoras en silencio.

En Windows: Como alternativa a "\ a", puede usar el comando Beep de WinAPI. Si usa Windows 7, es posible que esto no funcione como se esperaba.

Beep Function (Windows)

-3
#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; 

} 
+3

1. Las respuestas de solo código son malas; 2. Él está en Linux; 3. Él explícitamente dice 'using \ a' – Kevin

0

Si está utilizando Windows, las versiones de Windows-haciendo pitido muy diferentes maneras. Algunos de ellos lo habilitan y funcionan bien, pero algunas versiones de Windows no. En algunas ventanas, funciona solo en ese caso, si tiene un altavoz interno de la placa base. Pero en algunas otras ventanas, funciona bien sin un altavoz interno de la placa base, directamente desde la tarjeta de sonido (¡eso sería bueno!).

Si tiene suerte, y usa la versión de Windows apropiada, el beep/Beep/printf ("\ a") funcionará (en el altavoz interno (si tiene), o en el mejor de los casos a través de la tarjeta de sonido). Pero si está usando otra versión de Windows, no funcionará. Si en su computadora está bien, la PC de su amigo/miembro de la familia guardará silencio, y él/ella pensará que usted escribió un programa incorrecto :-D pero no.

Mi consejo, que debe usar una biblioteca para audio. Es simple, multiplataforma, y ​​funcionará siempre todas las computadoras, etc. Por ejemplo, Allegro_v4, Allegro_v5, SDL (Simple DirectMedia Layer), o algo así. Estas bibliotecas funcionan bien con OpenGL/DirectX, y con estas bibliotecas, puede cargar imágenes, reproducir videos y cosas por el estilo. Nativo OpenGL/GLUT/DirectX no puede hacer cosas como esa.

-2

que suelen utilizar otra forma de obtener la señal acústica que funciona al 100% en Windows 7.

int x=7; //7 is beep sound other numbers may show emoji and characters 
    printf("%c",x); 
Cuestiones relacionadas