¿Diferencia entre fprintf, printf y sprintf?

Resuelto Vishwanath Dalvi asked hace 13 años • 9 respuestas

¿Alguien puede explicar en inglés sencillo las diferencias entre printf, fprintfy sprintfcon ejemplos?

¿En qué corriente está?

Estoy realmente confundido entre los tres mientras leo sobre "Manejo de archivos en C".

Vishwanath Dalvi avatar Jan 07 '11 22:01 Vishwanath Dalvi
Aceptado

En C, una "corriente" es una abstracción; desde la perspectiva del programa es simplemente un productor (flujo de entrada) o consumidor (flujo de salida) de bytes. Puede corresponder a un archivo en el disco, a una tubería, a su terminal o a algún otro dispositivo como una impresora o un tty. El FILEtipo contiene información sobre la transmisión. Normalmente, no interviene FILEdirectamente con el contenido de un objeto, simplemente le pasa un puntero a las distintas rutinas de E/S.

Hay tres flujos estándar: stdines un puntero al flujo de entrada estándar, stdoutes un puntero al flujo de salida estándar y stderres un puntero al flujo de salida de error estándar. En una sesión interactiva, los tres normalmente hacen referencia a tu consola, aunque puedes redirigirlos para que apunten a otros archivos o dispositivos:

$ myprog < inputfile.dat > output.txt 2> errors.txt

En este ejemplo, stdinahora apunta a inputfile.dat, stdoutapunta a output.txty stderrapunta a errors.txt.

fprintfescribe texto formateado en el flujo de salida que especifique.

printfes equivalente a escribir fprintf(stdout, ...)y escribe texto formateado hacia donde apunta actualmente el flujo de salida estándar.

sprintfescribe texto formateado en una matriz de char, a diferencia de una secuencia.

John Bode avatar Jan 07 '2011 17:01 John Bode

printfsalidas al flujo de salida estándar ( stdout)

fprintfva a un identificador de archivo ( FILE*)

sprintfva a un búfer que usted asignó. ( char*)

Moo-Juice avatar Jan 07 '2011 15:01 Moo-Juice
  • printf(const char *format, ...)se utiliza para imprimir los datos en la salida estándar, que suele ser un monitor de computadora.
  • sprintf(char *str, const char *format, ...)es como printf. En lugar de mostrar la cadena formateada en la salida estándar, es decir, un monitor, almacena los datos formateados en una cadena señalada por el puntero char (el primer parámetro). La ubicación de la cadena es la única diferencia entre la sintaxis de printf y sprint.
  • fprintf(FILE *stream, const char *format, ...)es como printfotra vez. Aquí, en lugar de mostrar los datos en el monitor o guardarlos en alguna cadena, los datos formateados se guardan en un archivo al que apunta el puntero de archivo que se utiliza como primer parámetro fprintf. El puntero de archivo es la única adición a la sintaxis de printf.

Si stdoutel archivo se utiliza como primer parámetro en fprintf, su funcionamiento se considera equivalente al de printf.

Rubal avatar Jun 21 '2015 22:06 Rubal