]> git.llucax.com Git - z.facultad/75.06/jacu.git/blobdiff - otros/blocksorting/main.c
* Modifico el main para que acepte el modo Luca y el modo Gazer :-)
[z.facultad/75.06/jacu.git] / otros / blocksorting / main.c
index 3df6d8aace4f1ecd491c057db1b4ca075372b66b..70280179c3566d737aa10619d90cc66c48f5a830 100644 (file)
@@ -5,39 +5,49 @@ int main(int argc, char *argv[])
 {
        char *data; 
        char *salida;
 {
        char *data; 
        char *salida;
-       unsigned long int len, i, k;
+       unsigned long int len, i, k, total;
        FILE *fp;
        char c;
        t_BlockSort *bs;
        
        FILE *fp;
        char c;
        t_BlockSort *bs;
        
-       if (argc != 3) {
-               printf("Modo de uso : %s <archivo datos> <tamaƱo pagina>\n", argv[0]);
-               return 0;
+       if (argc == 3) {
+               fp = fopen(argv[1], "r");
+               len = atoi(argv[2]);
+       } else if (argc == 2) {
+               fp = stdin; /*fopen(argv[1], "r");*/
+               len = atoi(argv[1]);
+       } else {
+               printf("no, no\n");
+               return 1;
        }
 
        }
 
-       fp = fopen(argv[1], "r");
-       len = atoi(argv[2]);
-
        data = malloc(sizeof(char)*len);
        salida = malloc(sizeof(char)*(len+1));
 
        salida[len] = '\0';
        bs = bs_create(len);
 
        data = malloc(sizeof(char)*len);
        salida = malloc(sizeof(char)*(len+1));
 
        salida[len] = '\0';
        bs = bs_create(len);
 
-       while ((c = fgetc(fp)) != EOF) {
+       c = fgetc(fp);
+       total = 0;
+       while (!feof(fp)) {
                i = 0;
                i = 0;
-               while ((c!=EOF) && (i < len)) {
+               while ((!feof(fp)) && (i < len)) {
                        data[i++] = c;
                        c = fgetc(fp);
                        data[i++] = c;
                        c = fgetc(fp);
+                       total++;
                }
                bs_solve(data, salida, bs, &k, i);
 
                /* XXX ACA SALIDA DEBERIA PASAR A LA SIGUIENTE ETAPA XXX */
                }
                bs_solve(data, salida, bs, &k, i);
 
                /* XXX ACA SALIDA DEBERIA PASAR A LA SIGUIENTE ETAPA XXX */
-               printf("%s -> %ld\n", salida, k);
+               if (argc == 3) 
+                       printf("%s -> %ld\n", salida, k);
+               else
+                       printf("%s", salida);
        }
        fclose(fp);
        bs_destroy(bs);
 
        }
        fclose(fp);
        bs_destroy(bs);
 
+       printf("Total bytes : %ld\n", total);
        free(data);
        free(salida);
        return 0;
        free(data);
        free(salida);
        return 0;