Ficheros en C: ejercicio resuelto para contar lineas y caracteres

  2 minutos

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.

Abre un archivo de texto en modo lectura y cuenta:

  • número de lineas,
  • número total de caracteres.
#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;
}
Lineas: 3
Caracteres: 74

Los valores exactos dependen del contenido de datos.txt.

Prueba un archivo sin salto de línea final.
Ejemplo de contenido:

uno
dos
tres

Si no termina en \n, el conteo de líneas puede quedar una unidad por debajo si no lo contemplas.

  • No comprobar si fopen devolvió NULL.
  • No cerrar el archivo con fclose.
  • No considerar que EOF no es un carácter real del archivo.
  • Asumir que todas las líneas terminan en \n y contar mal la última línea.
  • Tiempo: O(n), recorriendo cada carácter una vez.
  • Espacio extra: O(1).

Este patrón se usa para procesar logs, trazas y ficheros de eventos, algo muy útil en observabilidad y sistemas.

Si quieres una ruta completa con progresión real de dificultad:

Sí. Es una base directa para pasar luego a escritura (fprintf) y ficheros binarios (fread/fwrite).

En Programación en C en 100 ejercicios resueltos y en Ejercicios C. Kindle Unlimited: Ver en Amazon.

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.