#include <stdio.h>
void comprimirArchivo(FILE* archivoEntrada, FILE* archivoSalida) { char caracterActual, caracterAnterior;
int contador = 1;
// Leer el primer carácter del archivo
caracterAnterior = fgetc(archivoEntrada);
while ((caracterActual = fgetc(archivoEntrada)) != EOF) { // Comprimir utilizando Run-Length Encoding
if (caracterActual == caracterAnterior) { contador++;
} else { fprintf(archivoSalida, "%d%c", contador, caracterAnterior);
contador = 1;
caracterAnterior = caracterActual;
}
}
// Imprimir la última secuencia
fprintf(archivoSalida, "%d%c", contador, caracterAnterior);
}
int main() { FILE* archivoEntrada;
FILE* archivoSalida;
archivoEntrada = fopen("archivo.txt", "r"); archivoSalida = fopen("archivo_comprimido.txt", "w");
if (archivoEntrada == NULL || archivoSalida == NULL) { perror("Error al abrir el archivo"); return 1;
}
comprimirArchivo(archivoEntrada, archivoSalida);
fclose(archivoEntrada);
fclose(archivoSalida);
return 0;
}