En C, imprimir en salida estándar es fácil, con printf
from stdio.h
.
Sin embargo, ¿cómo puedo imprimir en stderr? Podemos utilizar fprintf
para lograrlo aparentemente, pero su sintaxis parece extraña. ¿Quizás podamos usar printf
para imprimir en stderr?
fprintf
.Respuestas:
La sintaxis es casi la misma que
printf
. Conprintf
le da el formato de cadena y su contenido, es decir:Con
fprintf
él es lo mismo, excepto que ahora también está especificando el lugar donde imprimir:O en tu caso:
fuente
Ejemplos:
fuente
stderr generalmente no tiene búfer y stdout generalmente lo es. Esto puede llevar a una salida de apariencia extraña como esta, lo que sugiere que el código se está ejecutando en el orden incorrecto. No lo es, es solo que el búfer de salida estándar aún no se ha vaciado. Los flujos redirigidos o canalizados, por supuesto, no verían esta intercalación, ya que normalmente solo verían la salida de stdout only o stderr only.
Aunque inicialmente tanto stdout como stderr llegan a la consola, ambos están separados y se pueden redirigir individualmente.
fuente
¿Sabe usted
sprintf
? Es básicamente lo mismo confprintf
. El primer argumento es el destino (el archivo en el caso defprintf
iestderr
), el segundo argumento es la cadena de formato y el resto son los argumentos como de costumbre.También recomiendo esta
printf
referencia (y familiar) .fuente
Si no desea modificar los códigos actuales y solo para el uso de depuración.
Agregue esta macro:
Cambie
stderr
astdout
si desea retroceder.Es útil para la depuración, pero no es una buena práctica.
fuente
Para imprimir su contexto, puede escribir código como este:
fuente