Wie die% (Prozent) Zeichen in C der printf zu entkommen?
-
13-09-2019 - |
Frage
Wie entkommen Sie das% -Zeichen, wenn printf
in C mit?
printf("hello\%"); /* not like this */
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]
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 *%"