Ficheros en C: ejercicio resuelto
Si buscas ficheros en C ejercicios resueltos, este ejemplo cubre un caso real muy común: abrir un archivo, recorrerlo carácter a carácter y calcular métricas básicas.
Enunciado
Abre un archivo de texto en modo lectura y cuenta:
- número de lineas,
- número total de caracteres.
Solución en C
#include <stdio.h>
int main(void) {
FILE *f = fopen("datos.txt", "r");
if (f == NULL) {
perror("No se pudo abrir datos.txt");
return 1;
}
int c;
int lineas = 0;
int caracteres = 0;
while ((c = fgetc(f)) != EOF) {
caracteres++;
if (c == '\n') {
lineas++;
}
}
fclose(f);
printf("Lineas: %d\n", lineas);
printf("Caracteres: %d\n", caracteres);
return 0;
}Salida esperada
Lineas: 3
Caracteres: 74Los valores exactos dependen del contenido de datos.txt.
Caso borde recomendado
Prueba un archivo sin salto de línea final.
Ejemplo de contenido:
uno
dos
tresSi no termina en \n, el conteo de líneas puede quedar una unidad por debajo si no lo contemplas.
Errores frecuentes
- No comprobar si
fopendevolvióNULL. - No cerrar el archivo con
fclose. - No considerar que
EOFno es un carácter real del archivo. - Asumir que todas las líneas terminan en
\ny contar mal la última línea.
Complejidad temporal y espacial
- Tiempo: O(n), recorriendo cada carácter una vez.
- Espacio extra: O(1).
Aplicación práctica
Este patrón se usa para procesar logs, trazas y ficheros de eventos, algo muy útil en observabilidad y sistemas.
Siguiente ejercicio recomendado
- Cadenas en C: ejercicios resueltos con strlen, strcpy y strcmp
- fread y fwrite en C: ejercicio resuelto con archivo binario
- Búsqueda binaria en C: ejercicio resuelto en array ordenado
- Todos los ejercicios de C
Práctica guiada y siguiente paso
Si quieres una ruta completa con progresión real de dificultad:
FAQ
¿Este ejercicio sirve para aprender entrada y salida en C?
Sí. Es una base directa para pasar luego a escritura (fprintf) y ficheros binarios (fread/fwrite).
¿Dónde seguir con practica guiada?
En Programación en C en 100 ejercicios resueltos y en Ejercicios C. Kindle Unlimited: Ver en Amazon.
¿Cómo practicar este tipo de ejercicio para mejorar más rápido?
Empieza con entradas pequeñas, prueba casos límite (vacío, un elemento y capacidad máxima) y luego reescribe la solución sin copiarla.