Cómo escapar del signo % (porcentaje) en printf de C
¿Cómo se escapa el signo % cuando se usa printf
en C?
printf("hello\%"); /* not like this */
Aceptado
Puedes escapar publicando un '%' doble como este:%%
Usando tu ejemplo:
printf("hello%%");
Escapar del signo '%' es solo para printf . Si lo haces:
char a[5];
strcpy(a, "%%");
printf("This is a's value: %s\n", a);
Imprimirá:This is a's value: %%
Como han dicho otros, %% escapará del %.
Sin embargo, tenga en cuenta que nunca debe hacer esto:
char c[100];
char *c2;
...
printf(c); /* OR */
printf(c2);
Siempre que tengas que imprimir una cadena, siempre, siempre, siempre imprímela usando
printf("%s", c)
para evitar que un % incrustado cause problemas (violaciones de memoria, fallas de segmentación , etc.).
Si no hay formatos en la cadena, puede usar puts
(o fputs
):
puts("hello%");
si hay un formato en la cadena:
printf("%.2f%%", 53.2);
Como se indica en los comentarios, puts
agrega a \n
al resultado y fputs
no lo hace.
Consigo mismo...
printf("hello%%"); /* like this */
Utilice un doble%%
:
printf("hello%%");