Domanda

Come si fa a sfuggire il segno% quando si utilizza printf in C?

printf("hello\%"); /* not like this */
È stato utile?

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]

Se non ci sono formati nella stringa, è possibile utilizzare puts (o fputs ):

puts("hello%");

se v'è un formato nella stringa:

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

Come notato nei commenti, puts aggiunge un \n all'uscita e fputs no.

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 *%"

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top