Saltar al contenido

¿Cuál es la diferencia entre printf () y put () en C?

Solución:

puts es más simple que printf pero tenga en cuenta que el primero agrega automáticamente una nueva línea. Si eso no es lo que quieres, puedes fputs su cadena a stdout o usar printf.

(Esto se señala en un comentario de Zan Lynx, pero creo que merece una respuesta, dado que la respuesta aceptada no lo menciona).

La diferencia esencial entre puts(mystr); y printf(mystr); es que en este último el argumento se interpreta como un cadena de formato. El resultado será a menudo el mismo (excepto por la nueva línea agregada) si la cadena no contiene ningún carácter de control (%) pero si no puede confiar en eso (si mystr es una variable en lugar de un literal) debe no úselo.

Entonces, es generalmente peligroso y conceptualmente incorrecto– para pasar una cadena dinámica como único argumento de printf:

  char * myMessage;
  // ... myMessage gets assigned at runtime, unpredictable content
  printf(myMessage);  // <--- WRONG! (what if myMessage contains a '%' char?) 
  puts(myMessage);    // ok
  printf("%sn",myMessage); // ok, equivalent to the previous, perhaps less efficient

Lo mismo se aplica a fputs vs fprintf (pero fputs no agrega la nueva línea).

Además de formatear, puts devuelve un entero no negativo si tiene éxito o EOF si no tiene éxito; tiempo printf devuelve el número de caracteres impresos (sin incluir el nulo final).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *