Stdio.h

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 24 de mayo de 2014; las comprobaciones requieren 14 ediciones .

stdio.h (del encabezado de entrada/salida estándar en inglés  - archivo de encabezado de  entrada/salida estándar ) : archivo de encabezado de la biblioteca estándar de C que contiene definiciones de macros , constantes y declaraciones de funciones y tipos utilizados para varias operaciones estándar de entrada y salida. La funcionalidad se hereda del "paquete de E/S portátil" escrito por Mike Lesk de Bell Labs a principios de la década de 1970. [1] C++ también usa el archivo de encabezado cstdio junto con el archivo de encabezado similar para compatibilidad . stdio.h

Las funciones declaradas en stdio.hson muy populares porque, como parte de la biblioteca estándar de C , se garantiza que funcionarán en cualquier plataforma que admita C. Sin embargo, las aplicaciones en plataformas individuales pueden tener motivos para utilizar las funciones de E/S de la propia plataforma en lugar de las de stdio.h.

El estándar define dicho concepto como un flujo  : un conjunto secuencial de información que puede ser de entrada o salida, puede ser proporcionada tanto por un archivo como por un dispositivo (por ejemplo, una terminal ) [2] . La secuencia puede ser de texto o binaria . Un flujo de texto es una secuencia de caracteres. Sin embargo, el término "carácter" en este contexto puede significar tanto un carácter legible como un carácter de control (por ejemplo, un carácter de tabulación vertical o un carácter de fin de archivo). Los caracteres del flujo de texto se concatenan en líneas. Cada línea termina con un carácter de nueva línea o de fin de archivo. Un flujo binario es una secuencia de bytes que puede representar de forma transparente cualquier información (incluido el texto). Una transmisión puede estar en uno de estos tres estados: sin dirección (predeterminado), ancho de caracteres o bit a bit. El estado está determinado por la última función que utilizó este subproceso.

Ejemplo de uso

Todas las funciones en el lenguaje C (y sus muchas variedades) se declaran en archivos de encabezado . Por lo tanto, los programadores deben incluir el archivo stdio.hcon el código fuente para poder utilizar las funciones declaradas en él.

#incluir <stdio.h> int principal ( vacío ) { int ch ; while (( ch = getchar ()) != EOF ) putchar ( ch ); poner ( '\n' ); devolver 0 ; }

El programa anterior lee todas las entradas de la entrada estándar y las envía byte a byte a la salida estándar, agregando un carácter de nueva línea al final de la salida.

Funciones

Las funciones declaradas en stdio.hgeneralmente se pueden dividir en dos categorías: funciones para operaciones de archivos y funciones para operaciones de E/S.

Nombre notas
Funciones para operaciones con archivos
fclose cierra el archivo asociado con el valor FILE * que se le pasó
fopen, freopen, fdopen abrir un archivo para ciertos tipos de lectura y escritura
remove borra el archivo (borrándolo)
rename cambia el nombre del archivo
rewind funciona como fseek(stream, 0L, SEEK_SET) invocado en un flujo, con el indicador de error reiniciado
tmpfile crea y abre un archivo temporal que se elimina cuando se cierra con fclose()
Funciones para operaciones de E/S
clearerr borra EOF y los indicadores de error para el flujo dado
feof comprueba si el indicador EOF está configurado para el flujo dado
ferror comprueba si se establece un indicador de error para la transmisión dada
fflush obliga a que la salida se almacene en búfer en el archivo asociado con la secuencia
fgetpos guarda la posición del puntero de archivo de la secuencia asociado con su primer argumento (ARCHIVO *) en su segundo argumento (fpos_t *)
fgetc devuelve un carácter del archivo
fgets recibe una cadena (que termina en nueva línea o fin de archivo) de una secuencia (como un archivo o stdin)
fputc escribe un carácter en la secuencia
fputs escribe una cadena en la secuencia
ftell devuelve un puntero de posición de archivo que se puede pasar a fseek
fseek produce un desplazamiento desde la posición actual en el archivo por el número especificado de bytes, o desde su principio o final, en la dirección especificada.
fsetpos establece el puntero de posición del archivo de flujo asociado con su primer argumento (ARCHIVO *) como almacenado en su segundo argumento (fpos_t *)
fread lee datos de un archivo
fwrite escribe datos en un archivo
getc lee y devuelve un carácter de la secuencia dada y cambia el puntero de posición del archivo; permite que se use como una macro con los mismos efectos que fgetc , excepto que puede evaluar la secuencia más de una vez
getchar tiene un efecto similar a getc(stdin)
gets lee caracteres desde stdinhasta el carácter de nueva línea y los almacena en su único argumento
printf, vprintf utilizado para la salida a la salida estándar
fprintf, vfprintf utilizado para enviar a archivo
sprintf, snprintf, vsprintf se utiliza para generar una matriz de tipo char( String en lenguaje C )
perror escribe un mensaje de error astderr
putc escribe y devuelve un carácter a la secuencia y cambia el puntero de posición del archivo; se puede usar como una macro con las mismas propiedades que fputc , excepto que puede procesar una transmisión más de una vez
putchar, fputchar similar a putc (salida estándar)
scanf, vscanf utilizado para la entrada desde la entrada estándar
fscanf, vfscanf utilizado para la entrada de un archivo
sscanf, vsscanf utilizado para la entrada de una matriz char(es decir, String en lenguaje C )
setbuf especifica el búfer que utilizará la secuencia especificada
setvbuf establece el modo de almacenamiento en búfer para la secuencia dada
tmpnam crea un nombre de archivo temporal
ungetc empuja a un personaje de vuelta a la corriente
puts genera una cadena de caracteres parastdout

Constantes

stdio.hLas siguientes constantes se definen en el archivo de encabezado :

Nombre notas
EOF un entero negativo de tipo intutilizado para indicar el final de un archivo
BUFSIZ un número entero igual al tamaño del búfer utilizado por la funciónsetbuf()
FILENAME_MAX el tamaño de la matriz char, suficiente para contener el nombre de cualquier archivo que se pueda abrir
FOPEN_MAX la cantidad de archivos que se pueden abrir al mismo tiempo; al menos igual a 8
_IOFBF abreviatura de "entrada/salida con búfer completo" (E/S con búfer completo); un número entero que se puede pasar a una función setvbuf()para solicitar un bloque de búfer de entrada y salida para una secuencia abierta
_IOLBF abreviatura de "línea de entrada/salida con búfer" (E/S con búfer lineal); un número entero que se puede pasar a una función setvbuf()para solicitar una línea de búfer de entrada y salida para una secuencia abierta
_IONBF abreviatura de "entrada/salida no almacenada en búfer" (E/S no almacenada en búfer); un número entero que se puede pasar a una función setvbuf()para solicitar entrada y salida sin búfer para una secuencia abierta
L_tmpnam el tamaño de la matriz char, suficiente para almacenar el nombre de archivo temporal generado por la funcióntmpnam()
NULL constante de puntero nulo de expansión de macro ; es decir, una constante que representa el valor de un puntero garantizado para apuntar a una dirección inexistente de un objeto en la memoria
SEEK_CUR un número entero que se puede pasar a una función fseek()para solicitar el posicionamiento relativo a la posición actual en el archivo
SEEK_END un número entero que se puede pasar a una función fseek()para solicitar el posicionamiento en relación con el final del archivo
SEEK_SET un número entero que se puede pasar a una función fseek()para solicitar el posicionamiento en relación con el comienzo del archivo
TMP_MAX el número máximo de nombres de archivo únicos generados por la función tmpnam(); al menos 25

Variables

Las siguientes variables se definen en el archivo de encabezado stdio.h:

Nombre notas
stdin un puntero para FILEapuntar a la entrada estándar (generalmente el teclado).
stdout un puntero para FILEapuntar a la salida estándar (generalmente una pantalla de terminal).
stderr un puntero para FILEapuntar al flujo de error estándar (generalmente una pantalla de terminal).

Tipos

Los tipos de datos definidos en el archivo de encabezado stdio.hcontienen:

  • FILE — una estructura que contiene información sobre un archivo o flujo de texto necesaria para realizar sus operaciones de entrada y salida, que incluye:
    • descriptor de archivo
    • posición actual en la corriente
    • indicador de fin de archivo
    • indicador de error
    • un puntero a un búfer de flujo, si es posible
  • fpos_t es un tipo que no es de matriz capaz de identificar de forma única la posición de cada byte en un archivo.
  • size_t es un tipo entero sin signo , que es el tipo del resultado de ejecutar el operador sizeof.

Notas

  1. Kernighan, Brian; Rob Pike . El entorno de programación UNIX (Neopr.) . — Acantilados de Englewood: Prentice Hall , 1984. - S. pág. 200.
  2. ISO/CEI 9899:1999 . Consultado el 7 de agosto de 2011. Archivado desde el original el 22 de agosto de 2011.

Enlaces