Este grupo de redactores ha estado por horas investigando para darle respuesta a tu interrogante, te regalamos la respuesta así que deseamos serte de mucha apoyo.
Solución:
puts
es mas 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
tu string para stdout o uso 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 una formato string. El resultado será a menudo el mismo (excepto por la nueva línea añadida) si el string 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 úsalo
Entonces, generalmente es peligroso -y conceptualmente incorrecto– para pasar una dinámica string 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
contra 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 final null).
valoraciones y reseñas
Acuérdate de que puedes permitirte añadir un criterio objetivo si te fue preciso.