15 Stimmen

So erzeugen Sie einen Signalton mit " \a Fluchtzeichen"?

Wenn ich das folgende Programm schreibe, ist beim Ausführen des Codes kein Piepton zu hören.

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

Können Sie mir sagen, wie man \a zur Erzeugung von Signaltönen mit einem C-Programm?

2voto

pmg Punkte 102904

Das Einzige, was nicht stimmt ( halb falsch ) mit Ihrem Programm ist main Unterschrift.

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


Und ich würde eine '\n' oder den Ausgabepuffer spülen, anstatt sich darauf zu verlassen, dass die Laufzeit alle Puffer automatisch spült, aber Ihr Programm sollte so wie es ist, die Glocke läuten. Wenn es das nicht tut, liegt das Problem woanders, nicht bei C .

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

2voto

user332422 Punkte 41

Ich verwende normalerweise einen anderen Weg, um den Signalton zu erhalten, der unter Windows 7 zu 100% funktioniert.

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

1voto

Edward Leno Punkte 6139

Ich stimme mit @Steve Jessop überein. Die Leute tun alles, um ihre Computer ruhig zu halten.

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

Signaltonfunktion (Windows)

0voto

user2654137 Punkte 17

Wenn Sie Windows verwenden, piepen die Windows-Versionen auf sehr unterschiedliche Weise. Einige von ihnen aktivieren das und funktionieren gut, aber einige Windows-Versionen tun es nicht. Bei manchen Windows-Versionen funktioniert es nur, wenn Sie einen internen Lautsprecher auf dem Motherboard haben. Aber bei anderen Windows-Versionen funktioniert es auch ohne internen Motherboard-Lautsprecher, direkt von der Soundkarte (das wäre schön!).

Wenn Sie Glück haben und die entsprechende Windows-Version verwenden, kann beep/Beep/printf(" \a ") wird funktionieren (über den internen Lautsprecher (falls vorhanden) oder im besten Fall über die Soundkarte). Wenn Sie aber eine andere Windows-Version verwenden, wird es nicht funktionieren. Wenn auf Ihrem Computer alles in Ordnung ist, wird der PC Ihres Freundes/Familienmitglieds verstummen, 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 Zeiten alle Computer usw. arbeiten. Zum Beispiel, Allegro_v4, Allegro_v5, SDL (Simple DirectMedia Layer), oder so ähnlich. Diese Bibliotheken funktionieren gut mit OpenGL / DirectX, und mit diesen Bibliotheken können Sie Bilder laden, Videos abspielen, und solche Dinge. Native OpenGL / GLUT / DirectX kann solche Dinge nicht tun.

0voto

qht Punkte 21

Bitte geben Sie Ihr Betriebssystem an, wie Sie Ihren Code ausgeführt haben und ob Ihr Computer einen Piepser hat.

Wenn Sie Windows verwenden, vielleicht diese Q&A Wie macht man einen Beep-Ton in C unter Windows? würde Ihnen helfen.

Wenn Sie eine GUI-Desktop-Linux-Distribution verwenden, haben Terminalemulatoren wie gnome-terminal oder xfce4-terminal eine Einstellungsoption, die Sie überprüfen können. Stellen Sie dann sicher, dass Ihr Lautsprecher funktioniert.

Der folgende Code funktioniert bei mir gut:

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

#include <stdio.h>

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

Übrigens, Ihr Code ist nicht das Problem.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X