]> git.llucax.com Git - z.facultad/75.06/jacu.git/blob - otros/blocksorting/main.c
70280179c3566d737aa10619d90cc66c48f5a830
[z.facultad/75.06/jacu.git] / otros / blocksorting / main.c
1
2 #include "bs.h"
3
4 int main(int argc, char *argv[])
5 {
6         char *data; 
7         char *salida;
8         unsigned long int len, i, k, total;
9         FILE *fp;
10         char c;
11         t_BlockSort *bs;
12         
13         if (argc == 3) {
14                 fp = fopen(argv[1], "r");
15                 len = atoi(argv[2]);
16         } else if (argc == 2) {
17                 fp = stdin; /*fopen(argv[1], "r");*/
18                 len = atoi(argv[1]);
19         } else {
20                 printf("no, no\n");
21                 return 1;
22         }
23
24         data = malloc(sizeof(char)*len);
25         salida = malloc(sizeof(char)*(len+1));
26
27         salida[len] = '\0';
28         bs = bs_create(len);
29
30         c = fgetc(fp);
31         total = 0;
32         while (!feof(fp)) {
33                 i = 0;
34                 while ((!feof(fp)) && (i < len)) {
35                         data[i++] = c;
36                         c = fgetc(fp);
37                         total++;
38                 }
39                 bs_solve(data, salida, bs, &k, i);
40
41                 /* XXX ACA SALIDA DEBERIA PASAR A LA SIGUIENTE ETAPA XXX */
42                 if (argc == 3) 
43                         printf("%s -> %ld\n", salida, k);
44                 else
45                         printf("%s", salida);
46         }
47         fclose(fp);
48         bs_destroy(bs);
49
50         printf("Total bytes : %ld\n", total);
51         free(data);
52         free(salida);
53         return 0;
54 }
55
56