#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;
}