From: Ricardo Markiewicz Date: Mon, 21 Jun 2004 02:08:57 +0000 (+0000) Subject: * Mejor guardo el k al principio y tambien guardo el tamaño del bloque (sera necesar... X-Git-Tag: svn_import~108 X-Git-Url: https://git.llucax.com/z.facultad/75.06/jacu.git/commitdiff_plain/9e5f9df91ca96fb4cf179841cea17c9b4fb0f99c?ds=sidebyside * Mejor guardo el k al principio y tambien guardo el tamaño del bloque (sera necesario hacer esto?) porque hay veces que no tengo un bloque completo, y para recuperar me pa' que lo voy a necesitar. --- diff --git a/src/blocksorting/bs.c b/src/blocksorting/bs.c index 7f8cb83..64ea8ab 100644 --- a/src/blocksorting/bs.c +++ b/src/blocksorting/bs.c @@ -73,10 +73,15 @@ void print_(char *data, unsigned long int pos, unsigned long int len) int generar_salida(char *data, t_BlockSort *bs, char *salida) { unsigned long int i, k; + char *out; + + /* Dejo lugar para guardar el k y el tamaño de este bloque */ + out = salida + sizeof(unsigned long int)*2; + k=-1; for(i=0; ilen; i++) { /* print_(data, bs->array[i].pos_inicial, bs->len); */ - salida[i] = data[bs->array[i].pos_final]; + out[i] = data[bs->array[i].pos_final]; if (bs->array[i].ord == 1) k = i; } return k; @@ -94,8 +99,9 @@ void bs_solve(char *in, char *out, t_BlockSort *bs, unsigned long int *k, unsign ordenar_array(in, bs); (*k) = generar_salida(in, bs, out); - /* Guardo el k en el array */ - memcpy(out+leido, k, sizeof(unsigned long int)); + /* Guardo el k y el tamaño en el array */ + memcpy(out, k, sizeof(unsigned long int)); + memcpy(out+sizeof(unsigned long int), &leido, sizeof(unsigned long int)); bs->len = l; } diff --git a/src/jacu.c b/src/jacu.c index 2982b0f..8e74812 100644 --- a/src/jacu.c +++ b/src/jacu.c @@ -62,7 +62,7 @@ int main(int argc, char* argv[]) char *salida, *data, c; data = malloc(sizeof(char)*pagesize); /* Reservo lugar tambien para guardar el k */ - salida = malloc(sizeof(char)*(pagesize)+sizeof(unsigned long int)); + salida = malloc(sizeof(char)*(pagesize)+sizeof(unsigned long int)*2); bs = bs_create(pagesize); fp = fopen(argv[optind], "rb"); fp_out = fopen("tmp.comp", "wb"); @@ -78,7 +78,7 @@ int main(int argc, char* argv[]) /* Hago el BS */ bs_solve(data, salida, bs, &k, i); /* Le aplico el MTF */ - mtf = jacu_mtf(salida, i+sizeof(unsigned long int)); + mtf = jacu_mtf(salida, i+sizeof(unsigned long int)*2); for(j=0; j