Este progtwig suena la campana!

Soy un estudiante nuevo en el campo de la progtwigción, por lo que no puedo entender este progtwig escrito en mi libro que he estado siguiendo durante unos días. El progtwig es así:

#include "stdio.h" main() { printf("\a"); } 

¿Qué significa este progtwig? ¿Este progtwig significa que podríamos escuchar una campana sonando? ¡No puedo escuchar ningún sonido de campana!

El carácter ASCII 7 es el carácter BELL, y se representa en C como \a . Algunos terminales emitirán un pitido cuando este carácter se emita en el terminal; hoy en día, muchos no lo hacen. (Te estoy mirando, Ubuntu.)

En la Edad Oscura, cuando ASCII fue codificado de las cenizas de BAUDOT , un terminal era una gran porción de hierro que pegaba tinta al papel, a menudo incluía un punzón de cinta de papel y un lector, e interpretaba las teclas para generar una señal serial asíncrona a un Cientos de baudios con ruedas giratorias y relés.

En caso de que un operador se quedara dormido por los sonidos tranquilizadores del texto, tenía una campana real que podía sonar. El carácter codificado 007 en octal, 0x07 en hexadecimal o como \a en un carácter C o constante de cadena sonó el timbre cuando se recibió.

A medida que las terminales se hacían más pequeñas y se implementaban con pocas o ninguna parte móvil, la campana física fue reemplazada por una señal acústica.

Exactamente lo que hace su emulador de terminal (también conocido como una ventana de consola en Windows, xterm o algo similar en Unix) cuando se le pide que muestre que el carácter de control no está bien estandarizado en la actualidad. Debería hacer un ruido o destellar la ventana, pero su millaje variará.

Echa un vistazo a esta entrada de wikipedia: carácter de campana :

En el lenguaje de progtwigción C (creado en 1972), el carácter de campana se puede colocar en una cadena o constante de caracteres con \ a (‘a’ significa “alerta” o “audible” y se eligió porque \ b ya se usaba para retroceso ).

Escuchará un pitido desde el altavoz interno de su PC (no los altavoces externos o los auriculares que pueda haber conectado).

\a dispara el timbre del sistema. Es la secuencia de escape para el personaje ASCII BEL .

Aparte de todas las respuestas que tiene, tenga en cuenta que su progtwig probablemente no se compile. Aquí está la versión fija:

 #include  #include  int main() { printf("\a"); return EXIT_SUCCESS; } 

El cambio más importante es que los encabezados del sistema deben estar rodeados con , en lugar de comillas. Además, es mejor saber que la función main () siempre devuelve un int (al sistema operativo), y que este int está codificado en dos constantes, EXIT_SUCCESS, y EXIT_FAILURE, en el encabezado stdlib.h

\ a es la representación en C del carácter de control de alerta audible (“campana”) ASCII. En un terminal serial de la vieja escuela, la salida de ese personaje produjo un “pitido”. Su emulador de terminal puede o no implementar esta característica.

Intenta algo más simple:

 printf("hello\tworld"); printf("hello\nworld"); 

y mira lo que pasa.

Su ejemplo con el carácter BELL, como han señalado otros, probablemente no funcionará en las tostadoras de hoy en día ^ H ^ H ^ H ^ H ^ H ^ H ^ H ^ H; la mayoría de los terminales redireccionan el carácter ‘campana’ para descartarlo o para destellar brevemente el terminal.

Y créeme, quieres mantenerlo así para las sesiones de encoding nocturna 🙂

Las cadenas pueden contener caracteres que se manejan de forma diferente a todos los demás caracteres. El más usado explícito es '\n' . El carácter '\n' no imprime un carácter en la consola, sino que le dice a la consola que comience una nueva línea. Dichos caracteres especiales se denominan no imprimibles ya que no tienen una representación visible propia en c y tienen que usar secuencias de escape en su lugar.

En la secuencia de escape "\a" la barra diagonal inversa antes de la a le dice al comstackdor que a es un identificador para un carácter especial y almacenará su valor char en lugar del valor char de 'a' .

La secuencia de escape '\a' es el carácter de campana audible, el hecho de dar este carácter a una consola a través de imprimir () debería producir un pitido. Algunas consolas no emiten pitidos.

Aquí hay algunos caracteres especiales, el enlace es de una referencia de c ++ pero la mayoría debería ser válida para c.

El progtwig anterior que usted ha escrito lo he probado en los bloques de código usando el comstackdor GNU GCC.

Estaba funcionando bien …

Si desea escuchar un pitido, puede intentarlo de otra manera, ¡solo será útil en Windows!

 #include #include main() { Beep(600,600); /* you have to enter both the values whatever you want } 

Como cuestión de interés, esto parece funcionar en todas las comstackciones que no tienen un punto de entrada wWinMain o WinMain. wprintf(L"\a") suena bien para comstackciones Unicode. (Gana 7 aquí).

El altavoz de la PC solía depender de “speaker.drv”, pero esa pequeña belleza ha sido eliminada hace un tiempo y reemplazada con beep.sys, que ahora se mueve al agente de sonidos del sistema de modo de usuario .

La activación y desactivación del altavoz desde el símbolo del sistema también se trata aquí .

 #include int main() { int i = 263; putchar(i); // or you can directly use putchar(263); return 0; } 

Este progtwig produce un sonido de campana mientras está en la pantalla de salida