imprimir - ¿Cómo escapar del signo%(porcentaje) en printf de C?
porcentaje en c (14)
Como han dicho otros, %% escapará al%.
Tenga en cuenta, sin embargo, que nunca debe hacer esto:
char c[100];
char *c2;
...
printf(c); /* OR */
printf(c2);
Siempre que tenga que imprimir una cadena, siempre, siempre, siempre imprímala usando
printf("%s", c)
para evitar que un% incrustado cause problemas [violaciones de memoria, segfault, etc.]
¿Cómo escapar del signo% al usar printf
en C?
printf("hello/%"); /* not like this */
Con sí mismo ...
printf("hello%%"); /* like this */
El doble ''%'' también funciona en ".Format (...). Ejemplo (con iDrawApertureMask == 87, fCornerRadMask == 0.05): csCurrentLine.Format("/%ADD%2d%C,%6.4f*/%",iDrawApertureMask,fCornerRadMask) ;
proporciona el valor deseado y esperado de (contenido de cadena en) csCurrentLine; "% ADD87C, 0.0500 *%"
La barra invertida en C se utiliza para escapar de caracteres en cadenas. Las cadenas no reconocerían a% como un carácter especial y, por lo tanto, no sería necesario escapar. Printf es otra cuestión: use %% para imprimir un%.
Me gusta esto:
printf("hello%%");
//-----------^^ inside printf, use two percent signs together
Nitpick:
No escapa realmente al %
en la cadena que especifica el formato para la familia de funciones printf()
(y scanf()
).
El %
, en la familia de funciones printf()
(y scanf()
), inicia una especificación de conversión. Una de las reglas para la especificación de conversión establece que un %
como especificador de conversión (inmediatamente después del %
que inició la especificación de conversión) hace que se escriba un carácter ''%''
que se haya convertido ningún argumento.
La cadena realmente tiene 2 caracteres ''%''
adentro (a diferencia de los caracteres que se escapan: "a/bc"
es una cadena con 3 caracteres no nulos; "a%%b"
es una cadena con 4 caracteres no nulos).
Puedes evitarlo publicando un doble ''%'' como este: %%
Usando tu ejemplo:
printf("hello%%");
El signo ''%'' de escape es solo para printf. Si lo haces:
char a[5];
strcpy(a, "%%");
printf("This is a''s value: %s/n", a);
Se imprimirá: This is a''s value: %%
Puedes usar %%:
printf("100%%");
El resultado es:
100%
Sí, use printf ("hello %%"); y esta hecho
Simplemente puedes usar %
dos veces, eso es "%%"
Ejemplo:
printf("You gave me 12.3 %% of profit");
Utilizar esta:
#include <stdio.h>
printf("hello%s%s");
Una lista completa de los especificadores de formato utilizados con printf se puede encontrar aquí:
está utilizando un especificador de formato incorrecto, debe usar %%
para imprimir %
. Su código debe ser:
printf("hello%%");
Lea más todos los especificadores de formato utilizados en C.
usa un doble %%