Como escapar o sinal% (por cento) em printf do C?
-
13-09-2019 - |
Pergunta
Como você escapar o sinal% quando se utiliza printf
em C?
printf("hello\%"); /* not like this */
Solução
Você pode fugir dela, colocando um '%' double assim: %%
Usando o seu exemplo:
printf("hello%%");
sinal Escaping '%' é apenas para printf. Se você fizer isso:
char a[5];
strcpy(a, "%%");
printf("This is a's value: %s\n", a);
Ele irá imprimir: This is a's value: %%
Outras dicas
Como já foi dito, %% vai escapar do%.
Note, no entanto, que você nunca deve fazer isso:
char c[100];
char *c2;
...
printf(c); /* OR */
printf(c2);
Sempre que você tem que imprimir uma string, sempre, sempre, sempre imprimi-lo usando
printf("%s", c)
para evitar uma% incorporado de causar problemas de memória, [violações segfault, etc]
Com ela mesma ...
printf("hello%%"); /* like this */
Nitpick:
Você realmente não escapar da %
na string que especifica o formato para a família de funções printf()
(e scanf()
).
O %
, na família printf()
(e scanf()
) de funções, inicia uma especificação de conversão. Uma das regras para os estados de especificação de conversão que um %
como um especificador de conversão (imediatamente após a %
que iniciou a especificação de conversão) faz com que um personagem '%'
a ser escrito com nenhum argumento convertido.
A cadeia '%'
dentro (em oposição ao escape de caracteres: "a\bc"
é uma cadeia com 3 caracteres não nulos; "a%%b"
é uma cadeia com 4 caracteres não nulos).
usar um duplo %%
Como esta:
printf("hello%%");
//-----------^^ inside printf, use two percent signs together
A barra invertida em C é usado para escapar caracteres em cordas. Cordas não reconheceria% como um caractere especial, e, portanto, nenhuma fuga seria necessário. Printf é outra questão:. Uso %% para imprimir uma%
Sim, uso printf ( "Olá %%"); e ele é feito.
Você pode simplesmente usar %
duas vezes, que é "%%"
Exemplo:
printf("You gave me 12.3 %% of profit");
Você pode usar %%:
printf("100%%");
O resultado é:
100%
você estiver usando especificador de formato incorreto você deve usar %%
para imprimir %
. O código deve ser:
printf("hello%%");
Leia mais todos os especificadores de formato usado em C .
O '%' double funciona também em" .format (...).
Exemplo (com iDrawApertureMask == 87, fCornerRadMask == 0,05):
csCurrentLine.Format("\%ADD%2d%C,%6.4f*\%",iDrawApertureMask,fCornerRadMask) ;
dá o valor desejado e esperado do conteúdo de cadeia (em) csCurrentLine;
"% ADD87C, 0,0500 *%"