Frage

Wie entkommen Sie das% -Zeichen, wenn printf in C mit?

printf("hello\%"); /* not like this */
War es hilfreich?

Lösung

Sie können es entkommen, indem sie ein doppeltes '%' wie dieses Posting: %%

Mit Ihrem Beispiel:

printf("hello%%");

Escaping '%' Zeichen ist nur für printf. Wenn Sie das tun:

char a[5];
strcpy(a, "%%");
printf("This is a's value: %s\n", a);

Es wird gedruckt: This is a's value: %%

Andere Tipps

Wie schon andere gesagt haben, wird %% das% entkommen.

Beachten Sie jedoch, dass Sie sollten dies nie tun:

char c[100];
char *c2;
...
printf(c); /* OR */
printf(c2);

Wenn Sie eine Zeichenfolge drucken haben, immer, immer, immer drucken Sie es mit

printf("%s", c)

ein eingebettetes% zu verhindern, was zu Problemen [Speicherverletzungen, segfault, etc]

Wenn es keine Formate im String sind, können Sie puts (oder fputs ):

puts("hello%");

, wenn es ein Format in der Zeichenfolge:

printf("%.2f%%", 53.2);

Wie in den Kommentaren erwähnt, puts anhängt eine \n mit dem Ausgang und fputs nicht.

Mit selbst ...

printf("hello%%"); /* like this */

Nitpick:
Sie nicht wirklich die % in der Zeichenfolge entkommen, die das Format für die printf() (und scanf()) -Familie von Funktionen gibt.

Die % im printf() (und scanf()) -Familie von Funktionen, startet eine Konvertierungsspezifikation. Eine der Regeln für die Umwandlung Spezifikation besagt, dass ein % als Konvertierungsspezifizierer (unmittelbar nach dem %, die die Umwandlung Spezifikation gestartet) bewirkt, dass ein '%' Zeichen geschrieben wird ohne Argument umgewandelt.

Die Zeichenfolge wirklich hat 2 '%' Zeichen innen (wie austretendes Zeichen Gegensatz: "a\bc" ist eine Zeichenkette mit 3 Nicht Null-Zeichen; "a%%b" ist eine Zeichenkette mit 4 nicht Null-Zeichen).

verwenden, um eine Doppel %%

Wie folgt aus:

printf("hello%%");
//-----------^^ inside printf, use two percent signs together

Der Schrägstrich in C wird verwendet, um Zeichen in Strings zu entkommen. Streicher würden nicht% als Sonderzeichen erkennen, und daher wäre kein Entkommen notwendig. Printf ist eine andere Sache. Verwenden %% ein% drucken

Yup, Verwendung printf ( "Hallo %%"); und es gemacht wird.

Sie einfach % zweimal verwenden kann, das heißt "%%"

Beispiel:

printf("You gave me 12.3 %% of profit");

Sie können mit %%:

printf("100%%");

Das Ergebnis ist:

  

100%

Sie verwenden falsche Formatspezifizierer Sie %% zum Drucken % verwenden sollten. Der Code sollte sein:

printf("hello%%");  

Lesen Sie mehr alle Formatbezeich in C verwendet.

Das doppelte '%' funktioniert auch in“.Format (...). Beispiel (mit iDrawApertureMask == 87, fCornerRadMask == 0,05): csCurrentLine.Format("\%ADD%2d%C,%6.4f*\%",iDrawApertureMask,fCornerRadMask) ; ergibt den gewünschten und erwarteten Wert von (String Inhalt in) csCurrentLine;     "% ADD87C, 0,0500 *%"

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top