Cómo escapar del signo % (porcentaje) en printf de C

Resuelto Chris_45 asked hace 14 años • 13 respuestas

¿Cómo se escapa el signo % cuando se usa printfen C?

printf("hello\%"); /* not like this */
Chris_45 avatar Dec 07 '09 21:12 Chris_45
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: %%

Pablo Santa Cruz avatar Dec 07 '2009 14:12 Pablo Santa Cruz

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.).

Mikeage avatar Dec 07 '2009 14:12 Mikeage

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, putsagrega a \nal resultado y fputsno lo hace.

Sinan Ünür avatar Dec 07 '2009 14:12 Sinan Ünür

Consigo mismo...

printf("hello%%"); /* like this */
martin clayton avatar Dec 07 '2009 14:12 martin clayton

Utilice un doble%% :

printf("hello%%");
jldupont avatar Dec 07 '2009 14:12 jldupont