2012-05-25 11 views
6

Tengo una muy tonta duda. Cuando estaba enseñando a mi amigo C-programa, me preguntó "¿por qué usamos printf, no puede ser printg o simplemente print". No pude responderle. Entonces, ¿hay realmente una razón para elegir printf en la programación C?C - ¿Por qué imprimir y no solo imprimir?

+1

Acabo de empezar a aprender la programación en C ... Me disculpo si esta pregunta es tonta ... – Sharan

+0

No existe una pregunta estúpida. Espera, sí, hay. Pero este no es realmente un ejemplo de uno. –

+4

¿Qué es vago o ambiguo sobre la pregunta? ¿Cómo no es razonablemente responsable? Ciertamente hay respuestas razonables. (También parece gracioso que K-ballo fue una de las personas que cerró esto a pesar de tener la respuesta aceptada). – jamesdlin

Respuesta

14

El f en printf significa con formato, se utiliza para imprimir con salida formateada.

+0

Gracias ... Entonces, si escribo solo imprimir, ¿funcionará? – Sharan

+3

@ Sharan Chandran: No hay función 'print' en la biblioteca estándar C. –

+3

@SharanChandran La versión no formateada simplemente se llama 'puts'. –

0

printf permite el formateo, mientras que la impresión no lo hace. Además, la impresión no existe en C. Ni siquiera sé qué es printg.

+0

No sé lo que 'print' es ... –

+0

sí, acabo de recordar que no existe también :) Hace mucho tiempo que no he codificado nada en línea recta c –

0

Si no me equivoco, printf significa "Imprimir datos formateados en stdout".

+0

Solo" imprimir en formato "- 'stdout' se da por supuesto siempre que no especifique lo contrario con' fprintf'. –

0

Como otros han señalado, la posteriorf indica salida formateada (o entrada formateada para funciones en la familia scanf).

Sin embargo, agregaré que la distinción importa porque es importante que las personas que llaman sepan que se espera que la cadena tenga una semántica de especificador de formato. Por ejemplo, no haga esto:

char* s = get_some_user_input(); 
printf(s); // WRONG. Instead use: printf("%s", s) or fputs(stdout, s) 

Si s pasa a contener % caracteres, imprimirla directamente con printf puede hacer que se accede argumentos inexistentes, lo que lleva a un comportamiento indefinido (y esto es un motivo de cierta vulnerabilidades de seguridad). Mantenga esta convención de nombres en mente si alguna vez define sus propias funciones variadas de printf.