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.
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.
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 |
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 |
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). |
Los tipos de datos definidos en el archivo de encabezado stdio.hcontienen: