Come sfuggire alla (per cento) segno% in printf del C?
-
13-09-2019 - |
Domanda
Come si fa a sfuggire il segno% quando si utilizza printf
in C?
printf("hello\%"); /* not like this */
Soluzione
Si può sfuggire che con la pubblicazione di un doppio '%' in questo modo: %%
Usando il tuo esempio:
printf("hello%%");
La fuoriuscita segno '%' è solo per printf. Se lo fai:
char a[5];
strcpy(a, "%%");
printf("This is a's value: %s\n", a);
Si stamperà: This is a's value: %%
Altri suggerimenti
Come altri hanno detto, %% sarà sfuggire al%.
Si noti, tuttavia, che non si dovrebbe mai fare questo:
char c[100];
char *c2;
...
printf(c); /* OR */
printf(c2);
Ogni volta che avete per stampare una stringa, sempre, sempre, sempre stamparlo utilizzando
printf("%s", c)
per evitare che un% incorporato da causare problemi [violazioni di memoria, segfault, ecc]
Con se stessa ...
printf("hello%%"); /* like this */
Nitpick:
Non è davvero sfuggire al %
nella stringa che specifica il formato per il printf()
(e scanf()
) famiglia di funzioni.
Il %
, nella famiglia printf()
(e scanf()
) di funzioni, inizia una specifica di conversione. Una delle regole per la specifica di conversione afferma che un %
come un indicatore di conversione (subito dopo la %
che ha iniziato la specifica di conversione) fa sì che un personaggio '%'
da scrivere senza argomenti convertiti.
La stringa davvero ha 2 caratteri '%'
all'interno (al contrario di sfuggire caratteri: "a\bc"
è una stringa di 3 caratteri non nulli; "a%%b"
è una stringa di 4 caratteri non nulli).
utilizzare una doppia %%
In questo modo:
printf("hello%%");
//-----------^^ inside printf, use two percent signs together
La barra inversa in C viene usato per fuggire i caratteri nelle stringhe. Le stringhe non riconoscerebbero% come un carattere speciale, e quindi sarebbe necessario scampo. Printf è un altro discorso:. Utilizzare %% per stampare un%
Yup, l'uso printf ( "ciao %%"); ed è fatta.
Si può semplicemente utilizzare %
due volte, cioè "%%"
Esempio:
printf("You gave me 12.3 %% of profit");
È possibile utilizzare %%:
printf("100%%");
Il risultato è:
100%
si utilizza identificatore di formato non corretta si dovrebbe utilizzare per la stampa %%
%
. Il codice dovrebbe essere:
printf("hello%%");
Per saperne di più tutti identificatori di formato usato in C .
Il doppio '%' funziona anche in" .format (...).
Esempio (con iDrawApertureMask == 87, fCornerRadMask == 0,05):
csCurrentLine.Format("\%ADD%2d%C,%6.4f*\%",iDrawApertureMask,fCornerRadMask) ;
fornisce il valore desiderato e prevista (contenuto della stringa a) csCurrentLine;
"% ADD87C, 0,0500 *%"