Wie drucke ich das Prozentzeichen (%) in C? [duplicate]

Lesezeit: 2 Minuten

Benutzeravatar von Paul Filch
Paul Filch

Warum druckt dieses Programm nicht die % Schild?

#include <stdio.h>

main()
{
     printf("%");
     getch();
}

  • Also hast du die Dokumentation gelesen? Was hat es mit dem Prozentzeichen gesagt?

    Benutzer529758

    21. Juli 2013 um 17:20 Uhr

  • Diese Frage lässt sich ganz einfach über Google beantworten. Das OP hätte seine Logik verwenden können, dh ('//) ist die Zeichenkonstante für / und diese angewendet. Gibt es da nicht auch eine Manpage printf?

    – Die Blaue Katze

    21. Juli 2013 um 20:38 Uhr

  • Vielleicht wolltest du das sagen '\\' ist die Zeichenkonstante für \ ? Die Zeichenkonstante für / ist '/'.

    – Das ist nicht mein richtiger Name

    22. Juli 2013 um 18:57 Uhr


Benutzeravatar von C_Intermediate_Learner
C_Intermediate_Learner

Ihr Problem ist, dass Sie Folgendes ändern müssen:

printf("%"); 

zu

printf("%%");

Oder Sie könnten ASCII-Code verwenden und schreiben:

printf("%c", 37);

🙂

  • C benötigt kein ASCII. printf("%c", 37); ist nicht tragbar.

    Benutzer529758

    21. Juli 2013 um 18:05 Uhr

  • @ H2CO3 ja, aber ich mag die Antwort, weil er einen zusätzlichen Trick gegeben hat!

    – Grijesh Chauhan

    21. Juli 2013 um 18:09 Uhr

  • @GrijeshChauhan Ich habe nicht gesagt, dass mir die Antwort nicht gefallen hat, es ist eine gute Antwort. Ich habe nur darauf hingewiesen, dass das oben genannte Snippet nicht portierbar ist.

    Benutzer529758

    21. Juli 2013 um 18:17 Uhr

  • @GrijeshChauhan Natürlich. Nichts für ungut 🙂

    Benutzer529758

    21. Juli 2013 um 18:27 Uhr

  • Warum nicht verwenden '%' Anstatt von 37?

    – Diti

    22. März 2014 um 16:52 Uhr

Benutzeravatar von macfij
macfij

In diesem Thema gibt es keine Erklärung, warum ein Prozentzeichen gedruckt werden soll. Man muss tippen %% und nicht zum Beispiel ein Escape-Zeichen mit Prozent – \%.

Aus comp.lang.c FAQ-Liste · Frage 12.6:

Der Grund, warum es schwierig ist, %-Zeichen mit printf auszugeben, ist, dass % im Wesentlichen das Escape-Zeichen von printf ist. Immer wenn printf ein % sieht, erwartet es, dass ihm ein Zeichen folgt, das ihm sagt, was als nächstes zu tun ist. Die aus zwei Zeichen bestehende Folge %% ist so definiert, dass sie ein einzelnes % ausgibt.

Um zu verstehen, warum % nicht funktionieren kann, denken Sie daran, dass der umgekehrte Schrägstrich \ das Escape-Zeichen des Compilers ist und steuert, wie der Compiler Quellcodezeichen zur Kompilierzeit interpretiert. In diesem Fall wollen wir jedoch steuern, wie printf seinen Formatstring zur Laufzeit interpretiert. Soweit es den Compiler betrifft, ist die Escape-Sequenz % undefiniert und führt wahrscheinlich zu einem einzelnen %-Zeichen. Es wäre unwahrscheinlich, dass sowohl \ als auch % zu printf gelangen, selbst wenn printf bereit wäre, \ speziell zu behandeln.

Also der Grund, warum man tippen muss printf("%%"); eine Single zu drucken % ist das, was in der printf-Funktion definiert ist. % ist ein Escape-Zeichen von printf und \ des Compilers.

  • Vielen Dank für die Begründung.

    – Dave Voyles

    13. März 2016 um 16:02 Uhr

Verwenden "%%". Das Manpage beschreibt diese Anforderung:

% Es wird ein ‘%’ geschrieben. Es wird kein Argument konvertiert. Die vollständige Konvertierungsspezifikation ist ‘%%‘.

Versuchen Sie, auf diese Weise auszudrucken

printf("%%");

1401520cookie-checkWie drucke ich das Prozentzeichen (%) in C? [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy