En este tema, aprenderemos cómo manejar archivos en C, específicamente cómo leer y escribir datos en archivos. Trabajar con archivos es una habilidad esencial para cualquier programador, ya que permite almacenar y recuperar datos de manera persistente.
Conceptos Clave
- Archivos: Un archivo es una colección de datos almacenados en un dispositivo de almacenamiento, como un disco duro.
- Flujo de Archivos: En C, los archivos se manejan mediante flujos (streams), que son abstracciones que permiten leer y escribir datos de manera secuencial.
- Funciones de Manejo de Archivos: C proporciona varias funciones para abrir, cerrar, leer y escribir archivos.
Abrir y Cerrar Archivos
Para trabajar con archivos en C, primero debemos abrir el archivo utilizando la función fopen()
. Una vez que terminamos de trabajar con el archivo, debemos cerrarlo con fclose()
.
Sintaxis de fopen()
filename
: Nombre del archivo que queremos abrir.mode
: Modo en el que queremos abrir el archivo (lectura, escritura, etc.).
Modos Comunes de Apertura
Modo | Descripción |
---|---|
"r" | Abre un archivo para lectura. El archivo debe existir. |
"w" | Abre un archivo para escritura. Si el archivo no existe, se crea. Si existe, se trunca a cero. |
"a" | Abre un archivo para añadir datos. Si el archivo no existe, se crea. |
"r+" | Abre un archivo para lectura y escritura. El archivo debe existir. |
"w+" | Abre un archivo para lectura y escritura. Si el archivo no existe, se crea. Si existe, se trunca a cero. |
"a+" | Abre un archivo para lectura y añadir datos. Si el archivo no existe, se crea. |
Ejemplo de Apertura y Cierre de Archivos
#include <stdio.h> int main() { FILE *file; // Abrir archivo para escritura file = fopen("example.txt", "w"); if (file == NULL) { printf("Error al abrir el archivo.\n"); return 1; } // Escribir datos en el archivo fprintf(file, "Hola, Mundo!\n"); // Cerrar el archivo fclose(file); return 0; }
Escribir en Archivos
Para escribir datos en un archivo, podemos usar varias funciones, como fprintf()
, fputs()
, y fputc()
.
fprintf()
Es similar a printf()
, pero escribe en un archivo en lugar de la consola.
fputs()
Escribe una cadena de caracteres en un archivo.
fputc()
Escribe un solo carácter en un archivo.
Ejemplo de Escritura
#include <stdio.h> int main() { FILE *file; // Abrir archivo para escritura file = fopen("example.txt", "w"); if (file == NULL) { printf("Error al abrir el archivo.\n"); return 1; } // Escribir una cadena de caracteres fputs("Esta es una línea de texto.\n", file); // Escribir un solo carácter fputc('A', file); // Escribir una cadena formateada fprintf(file, "\nNúmero: %d\n", 123); // Cerrar el archivo fclose(file); return 0; }
Leer de Archivos
Para leer datos de un archivo, podemos usar funciones como fscanf()
, fgets()
, y fgetc()
.
fscanf()
Es similar a scanf()
, pero lee desde un archivo en lugar de la consola.
fgets()
Lee una línea de texto de un archivo.
fgetc()
Lee un solo carácter de un archivo.
Ejemplo de Lectura
#include <stdio.h> int main() { FILE *file; char buffer[100]; int number; // Abrir archivo para lectura file = fopen("example.txt", "r"); if (file == NULL) { printf("Error al abrir el archivo.\n"); return 1; } // Leer una línea de texto if (fgets(buffer, 100, file) != NULL) { printf("Leído: %s", buffer); } // Leer un solo carácter char ch = fgetc(file); printf("Carácter leído: %c\n", ch); // Leer una cadena formateada fscanf(file, "\nNúmero: %d\n", &number); printf("Número leído: %d\n", number); // Cerrar el archivo fclose(file); return 0; }
Ejercicio Práctico
Ejercicio
- Crea un programa en C que abra un archivo llamado
data.txt
en modo escritura. - Escribe las siguientes líneas en el archivo:
Línea 1: Hola, Mundo! Línea 2: Programación en C.
- Cierra el archivo.
- Abre el archivo
data.txt
en modo lectura. - Lee y muestra en la consola cada línea del archivo.
Solución
#include <stdio.h> int main() { FILE *file; // Abrir archivo para escritura file = fopen("data.txt", "w"); if (file == NULL) { printf("Error al abrir el archivo.\n"); return 1; } // Escribir líneas en el archivo fputs("Línea 1: Hola, Mundo!\n", file); fputs("Línea 2: Programación en C.\n", file); // Cerrar el archivo fclose(file); // Abrir archivo para lectura file = fopen("data.txt", "r"); if (file == NULL) { printf("Error al abrir el archivo.\n"); return 1; } // Leer y mostrar cada línea del archivo char buffer[100]; while (fgets(buffer, 100, file) != NULL) { printf("%s", buffer); } // Cerrar el archivo fclose(file); return 0; }
Conclusión
En esta sección, hemos aprendido cómo abrir, cerrar, leer y escribir archivos en C. Estas habilidades son fundamentales para manejar datos de manera persistente en aplicaciones del mundo real. En el próximo tema, exploraremos cómo posicionar archivos y manejar errores en operaciones de archivos.
Curso de Programación en C
Módulo 1: Introducción a C
- Introducción a la Programación
- Configuración del Entorno de Desarrollo
- Programa Hola Mundo
- Sintaxis y Estructura Básica
Módulo 2: Tipos de Datos y Variables
Módulo 3: Flujo de Control
Módulo 4: Funciones
- Introducción a las Funciones
- Argumentos de Función y Valores de Retorno
- Ámbito y Vida de las Variables
- Funciones Recursivas
Módulo 5: Arreglos y Cadenas
- Introducción a los Arreglos
- Arreglos Multidimensionales
- Manejo de Cadenas
- Funciones de Arreglos y Cadenas
Módulo 6: Punteros
Módulo 7: Estructuras y Uniones
Módulo 8: Asignación Dinámica de Memoria
Módulo 9: Manejo de Archivos
- Introducción al Manejo de Archivos
- Lectura y Escritura de Archivos
- Posicionamiento de Archivos
- Manejo de Errores en Operaciones de Archivos
Módulo 10: Temas Avanzados
- Directivas del Preprocesador
- Argumentos de Línea de Comandos
- Listas de Argumentos Variables
- Multihilo en C
Módulo 11: Mejores Prácticas y Optimización
- Legibilidad del Código y Documentación
- Técnicas de Depuración
- Optimización del Rendimiento
- Consideraciones de Seguridad