2010-10-02 5 views
10

Wenn ich das folgende Programm schreibe, gibt es keinen Piepton beim Ausführen des Codes.Wie erzeugt man Pieptöne mit dem Escapezeichen " a"?

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

Können Sie mir sagen, wie \a verwenden für Pieptons Herstellung von C-Programm?

+3

, dass bis zum Terminal Werke, die davon abhängt, wie Sie das Programm ausführen. Wenn stdout in eine Datei umgeleitet wird, wird kein Signalton ausgegeben, bis Sie die Datei anzeigen. Trotzdem piepsen nicht alle Terminals tatsächlich, wenn sie ein ASCII-BEL-Zeichen erhalten. Ich für einen deaktiviere es, wenn ich kann. Bei Computern, die bei der Arbeit verwendet werden, stecke ich das Kabel im Allgemeinen vom internen PC-Lautsprecher ab und stumm den Rest des Tons aus, außer wenn ich Kopfhörer angeschlossen habe. Viel Glück, einen Piepton zu hören ... –

+1

Das tragischste Pieptöne stammen von Laptops, die durch die "normalen" Lautsprecher eine unglaubliche Lautstärke abgeben. –

+2

btw, Sie * müssen * das Programm von einem Terminal aus ausführen, da ein Piepton beim Drucken von '\ a' eine Terminal-Funktion ist (nicht C- oder OS-Funktion). –

Antwort

3

Die falsche einzige, was (Hälfte falsch) mit Ihrem Programm ist main Signatur.

Um 100% tragbar zu sein, sollte es int main(void) oder int main(int argc, char **argv) oder gleichwertig sein: int main() ist nicht gleichwertig.


Und ich würde eine '\n' drucken oder den Ausgabepuffer spülen anstatt auf die Laufzeit angewiesen automatisch alle Puffer für mich Spülung, aber Ihr Programm sollte die Glocke klingen, wie es ist. Wenn es das Problem nicht anderswo gibt, nicht mit C.

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

Sie könnten zumindest zugeben, dass C99 existiert, auch wenn Sie denken, dass der Fragesteller es nicht benutzt ;-) –

+0

Selbst in 'C99' ist' int main() 'nicht äquivalent zu einer der 2 veröffentlichten Definitionen. – pmg

+0

Es ist in einer Definition. Es ist nicht in anderen Erklärungen. 6.7.5.3/10 und/14. Sie bedeuten beide "keine Parameter", und 5.1.2.2.1/1 gibt an, dass "main" ohne Parameter OK ist. Es gibt nur eine der beiden Möglichkeiten, dies als Beispielcode zu tun, aber ich denke nicht, dass es bedeutet, dass die andere Art, dies zu tun, inakzeptabel ist. –

1

Ich stimme @Steve Jessop. Die Leute werden große Anstrengungen unternehmen, um ihre Computer ruhig zu halten.

In Windows: Als Alternative zu "\ a" könnten Sie den Beep-Befehl von WinAPI verwenden. Wenn Sie Windows 7 verwenden, funktioniert dies möglicherweise nicht wie erwartet.

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. Code-only-Antworten sind schlecht; 2. Er ist auf Linux; 3. Er sagt ausdrücklich "using \ a" – Kevin

0

Wenn Sie Windows verwenden, so dass die Windows-Versionen sehr unterschiedliche Weise Piepton. Einige von ihnen ermöglichen dies und funktionieren gut, aber einige Windows-Versionen nicht. In einigen Fenstern funktioniert es genau dann, wenn Sie einen internen Motherboard-Lautsprecher haben. Aber einige andere Fenster, es funktioniert gut ohne interne Motherboard-Lautsprecher, direkt von der Soundkarte (das wäre nett!).

Wenn Sie Glück haben und die entsprechende Windows-Version verwenden, funktioniert Beep/Beep/printf ("\ a") (auf internen Lautsprecher (falls vorhanden) oder im besten Fall über eine Soundkarte). Aber wenn Sie eine andere Windows-Version verwenden, wird es nicht funktionieren. Wenn es in Ihrem Computer in Ordnung ist, wird der PC Ihres Freundes/Familienmitglieds still sein, und er/Sie wird denken, dass Sie ein schlechtes Programm geschrieben haben :-D aber nicht.

Mein Rat, dass Sie eine Bibliothek für Audio verwenden sollten. Es ist einfach, plattformübergreifend, und es wird immer alle Computer usw. funktionieren. Zum Beispiel Allegro_v4, Allegro_v5, SDL (Simple DirectMedia Layer), oder so ähnlich. Diese Librarys funktionieren gut mit OpenGL/DirectX, und mit diesen Librarys können Sie Bilder laden, Videos abspielen und ähnliches. Natives OpenGL/GLUT/DirectX kann solche Dinge nicht machen.

-2

ich in der Regel einen anderen Weg benutzen Sie klingen die Beep es 100% auf Windows 7.

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