int main(int argc, char *argv[]) { offset *listaA; offset *listaB; offset *distintos; FILE *f; long neA, neB, nedis, i, j; int readOK, writeOK; if (argc != 4) { printf("\nUso: %s <lista_offsetsA> <lista_offsetsB> <lista_offsets_distintos>\n",argv[0]); printf("\nDescripción: "); printf("\n Devuelve una lista con los elementos de <lista_offsetsB> que no aparecen en <lista_offsetsA>.\n\n"); exit(1); } /* Contamos el numero de elementos de la lista A para reservar memoria */ neA = NumeroDeOffsetList(argv[1]); if (!neA) { printf("\nError al abrir el archivo: %s.",argv[1]); exit(1); } /* Reservamos memoria dinámica para el vector A de offsets */ listaA = (offset *) malloc (neA*sizeof(offset)); /* Leemos la lista A */ readOK = LeerOffsetList(argv[1],listaA,&neA); if (!readOK) { printf("\nError al abrir el archivo: %s.",argv[1]); exit(1); } /* Contamos el numero de elementos de la lista B para reservar memoria */ neB = NumeroDeOffsetList(argv[2]); if (!neB) { printf("\nError al abrir el archivo: %s.",argv[2]); exit(1); } /* Reservamos memoria dinámica para el vector B de offsets */ listaB = (offset *) malloc (neB*sizeof(offset)); /* Leemos la lista B */ readOK = LeerOffsetList(argv[2],listaB,&neB); if (!readOK) { printf("\nError al abrir el archivo: %s.",argv[2]); exit(1); } /* Reservamos memoria dinámica para el vector de offsets distintos */ distintos = (offset *) malloc ((neA+neB)*sizeof(offset)); /* Eliminamos los elementos repetidos */ EliminarRepetidosTwo(listaA,neA,listaB,neB,distintos,&nedis); /* Guardamos en disco la lista definitiva */ writeOK = EscribirOffsetList(argv[3],distintos,nedis); printf("\n# A: %ld",neA); printf("\n# B: %ld",neB); printf("\n# Distintos: %ld\n",nedis); return 0; }
int main(int argc, char *argv[]) { offset *lista; offset *distintos; long ne, nedis; double sum; int readOK, writeOK; if (argc != 3) { printf("\nUso: %s <in_offset_list> <out_distinct_offset_list>\n",argv[0]); printf("\nDescripción: "); printf("\n Acepta una lista de offsets y devuelve la misma lista sin elementos repetidos.\n"); printf("\nParámetros: "); printf("\n - <in_offset_list> = Archivo de entrada con la lista de offsets."); printf("\n - <out_offset_list> = Archivo de salida con la lista de offsets.\n\n"); exit(1); } /* Contamos el numero de elementos de la lista para reservar memoria */ ne = NumeroDeOffsetList(argv[1]); if (!ne) { printf("\nError al abrir el archivo: %s.",argv[1]); exit(1); } /* Reservamos memoria dinámica para los vectores de offsets */ lista = (offset *) malloc (ne*sizeof(offset)); distintos = (offset *) malloc (ne*sizeof(offset)); /* Leemos el archivo de offsets */ readOK = LeerOffsetList(argv[1],lista,&ne); if (!readOK) { printf("\nError al abrir el archivo: %s.",argv[1]); exit(1); } //qsort(lista, ne, sizeof(offset), &compare); /* Creamos una lista con los paquetes que no se repiten */ EliminarRepetidosOne(lista,ne,distintos,&nedis); printf("\n# Paquetes total: %ld",ne); printf("\n# Paquetes distintos: %ld",nedis); printf("\n# Paquetes repetidos: %ld",ne-nedis); /* Sumamos los bytes de los paquetes distintos */ sum = SumBytes(distintos,nedis); printf("\nSum (Bytes): %lf",sum); printf("\nSum (KBytes): %lf",sum/1024); printf("\nSum (MBytes): %lf\n",sum/(1024*1024)); printf("\nBYTES: %.0lf",sum); /* Ordenamos la lista ascendentemente según el offset */ OrdenarSeleccionDirecta(distintos,nedis); /* Guardamos la nueva lista de offset sin elementos repetidos */ writeOK = EscribirOffsetList(argv[2],distintos,nedis); if (!writeOK) { printf("\nError al crear el archivo: %s.",argv[2]); exit(1); } return 0; }