En este artículo, aprenderá qué archivos hay en C, por qué son necesarios y cómo manejar la E/S estándar en C usando varias funciones de C como fopen(), fclose(), fprintf(), fscanf() , getc (), putc(), getw(), fseek(), etc. Un archivo representa una serie de bytes, ya sea un archivo de texto o un archivo binario.
A Expediente se utiliza para almacenar grandes cantidades de datos. C proporciona múltiples funciones de administración de archivos, como crear archivos, abrir y leer archivos, escribir en el archivo y cerrar un archivo. El archivo se usa para almacenar datos relevantes y el manejo de archivos en C se usa para manipular los datos.
tipos de archivos
hay principalmente dos tipos de archivos que se pueden manejar con File Handling en C:
1. Archivos de texto: Estos son archivos de texto simples guardados con la extensión (.txt) y pueden ser creados o modificados por cualquier editor de texto. El archivo de texto almacena datos en forma de caracteres ASCII y se utiliza para almacenar un flujo de caracteres.
2. Archivos binarios: Se guarda en formato binario en lugar de caracteres ASCII. Los archivos binarios se utilizan normalmente para almacenar información numérica (int, float, double). Aquí es donde los datos se almacenan en forma binaria, es decir (0 y 1).
Varias operaciones que se pueden realizar en un archivo incluyen:
- Creación de un nuevo archivo (abierto con atributos como “a” o “a+” o “w” o “w+”).
- Abra un archivo existente (fopenopen).
- Leer desde archivo (fscanf o fgets).
- Escribir en un archivo con fprintf o fputs.
- Mueva el puntero de archivo asociado con un archivo en particular a una posición específica. (buscar, rebobinar).
- Cerrar (cerrar) un archivo.
Para realizar operaciones en el archivo, se utiliza un puntero especial llamado Puntero de archivo que se puede declarar como:
ARCHIVO archivo_ptr;
Podemos abrir el archivo como
file_ptr = fopen(«nombre de archivo.txt», «w»);
El segundo parámetro, es decir, «w», se puede cambiar de acuerdo con la siguiente tabla:
Modos de apertura | Descripción |
---|---|
r | Archivo de búsquedas. Si el archivo se abre con éxito, fopen() lo carga en la memoria y establece un puntero que apunta al primer carácter que contiene. Si el archivo fopen( ) no se puede abrir, devuelve NULL. |
rb | Abierto para lectura en modo binario. Si el archivo no existe, fopen() devolverá NULL. |
con quién | Archivo de búsquedas. El contenido se sobrescribirá si el archivo existe. Se creará un nuevo archivo si el archivo no existe. Devuelve NULL si el archivo no se puede abrir. |
wb | Abierto para escritura en modo binario. El contenido se sobrescribirá si el archivo existe; de lo contrario, se creará el archivo. |
a | Archivo de búsquedas. Si el archivo se abre con éxito, fopen() lo carga en la memoria y establece un puntero que apunta al último carácter que contiene. Si el archivo no existe, se crea un nuevo archivo. Devuelve NULL si el archivo no se puede abrir. |
abdominales | Abierto para agregar en modo binario. Los datos se adjuntan al final del archivo. Se creará un archivo si no existe. |
r+ | Archivo de búsquedas. Se abrió con éxito. fopen( ) lo carga en la memoria y establece un puntero que apunta al primer carácter que contiene. Si no puede abrir el archivo, devolverá NULL. |
rb+ | Abierto para lectura y escritura en modo binario. fopen( ) devuelve NULL si el archivo no existe. |
w+ | Archivo de búsquedas. El contenido se sobrescribirá si el archivo existe. Se creará un nuevo archivo si el archivo no existe. Devuelve NULL si el archivo no se puede abrir. |
wb+ | Abierto para lectura y escritura en modo binario. El contenido se sobrescribirá si el archivo existe. Se crea si el archivo no existe. |
un+ | Archivo de búsquedas. Si el archivo se abre con éxito, fopen() lo carga en la memoria y establece un puntero que apunta al último carácter que contiene. Si el archivo no existe, se crea un nuevo archivo. Devuelve NULL si el archivo no se puede abrir. |
ab+ | Abierto para leer y agregar en modo binario. Se crea un archivo si el archivo no existe. |
Para procesar archivos binarios, los modos abiertos como «rb», «wb», «ab», «rb+», r+b», «wb+», «w+b», «ab+», «a+b» serán el mas usado.
Abrir o crear un archivo en C
Para abrir y crear un archivo en c, podemos usar la función fopen() que se encuentra debajo del archivo de encabezado stdio.h.
Sintaxis:
p = fopen(«archivo abierto», «modo»);
Ejemplo:
p = fopen(«Hola.txt», r);
Leer y escribir en un archivo de texto en C
fprintf() y fscanf() se utilizan para leer y escribir en un archivo de texto en programación C. Esperan una referencia a la estructura FILE porque son versiones de archivo de print() y scanf().
C
|
Salida:

El programa anterior toma una cadena de un usuario y la almacena en text_file.text. Después de compilar este programa, se crea un archivo de texto llamado temp_text.txt en la carpeta C_Program. En el archivo podemos ver la cadena que ingresamos.
A continuación se muestra el programa C para leer el contenido del archivo:
C
|
Salida:

Leer y escribir en un archivo binario
miedo() se usa para leer desde un archivo binario y fwrite() se usa para escribir en un archivo en el disco.
1. Escribir en un archivo binario
La función fwrite() toma cuatro argumentos: dirección de los datos, tamaño de los datos para escribir en el disco, cantidad de tipos de datos y una referencia al archivo en el que queremos escribir.
Sintaxis:
fwrite(const void *ptr,tamaño_de_elementos,número_de_elementos, ARCHIVO *a_archivo);
A continuación se muestra el programa C para escribir en un archivo binario:
C
|
Salida:

Explicación: En el programa anterior crearemos un nuevo archivo llamado GFG.bin. La estructura llamada Num se declaró con dos números: n1, n2 y creó un objeto llamado obj. En for loop almacenamos valores en el archivo usando la función fwrite(). El primer parámetro tiene la dirección de obj y el segundo tiene el tamaño de la estructura definida Num.
Dado que solo hemos insertado una instancia de obj, el tercer parámetro es 1. fptr apunta al archivo donde se almacenan los datos. Y finalmente cerramos el archivo.
2. Lectura de un archivo binario
funcion fread() también tiene cuatro argumentos similares a la función fwrite() en la programación C.
Sintaxis:
fwrite(const void *ptr,tamaño_de_elementos,número_de_elementos, ARCHIVO *a_archivo);
A continuación se muestra el programa C para leer desde un archivo binario:
C
|
Salida:

Explicación: En el programa anterior, hemos leído el mismo archivo GFG.bin y revisamos los registros uno por uno. Leemos un solo registro Num de tamaño Num del archivo indicado por *fptr en el árbol Num. Obtenemos el mismo registro que insertamos en el programa anterior.
Mover punteros de archivo a posiciones específicas
fseek() y rewind() son los dos métodos en la programación C que se pueden usar para mover el puntero del archivo.
1. fseek() en programación C
La función fseek() se utiliza para establecer el puntero del archivo en el desplazamiento especificado y escribir datos en el archivo.
Sintaxis:
int fseek(ARCHIVO *stream, long int offset, int desde donde);
Aquí,
- de donde pueden ser SEEK_SET, SEEK_CUR y SEEK_END.
- BUSCAR_END: Indica el final del archivo.
- BUSCAR_ESTABLECER: Indica el comienzo del archivo.
- BUSCAR_CUR: Indica la posición actual del puntero del archivo.
A continuación se muestra el programa C para implementar fseek() :
C
|
Salida:

2. rebobinar() en C
La función rebobinar () mueve el puntero del archivo al principio del archivo.
Sintaxis:
rebobinado vacío (ARCHIVO * secuencia);
A continuación se muestra el programa C para implementar rewind() :
C
|
Salida:
