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.txten 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.txten 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
