variable porcentaje imprimir datos caracteres cadena c printf format-string

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


Si no hay formatos en la cadena, puede usar puts (o puts ):

puts("hello%");

Si hay un formato en la cadena:

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

Como se señaló en los comentarios, puts anexos a /n a la salida y fputs no.


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í:

http://www.mekong.net/tech/printf.htm



usa un doble %%