int main(int argc, char **argv){ if(argc != 2){ return 1; } FILE *archivo = fopen(argv[1], "r"); if(archivo == NULL){ fprintf(stderr, "No se pudo abrir el archivo"); return 1; } hash_t *hash_lineas = hash_crear(NULL); filtrar_e_imprimir_lineas(archivo, hash_lineas); hash_destruir(hash_lineas); return 0; }
int main(int argc, char** argv){ if(argc != 3){ printf("Uso: ./join <Archivo1> <Archivo2>\n"); exit(1); } FILE* archivo1 = fopen(argv[1], "r"); FILE* archivo2 = fopen(argv[2], "r"); if(!archivo1 || !archivo2) { if(archivo1) fclose(archivo1); if(archivo2) fclose(archivo2); printf("Error al abrir un archivo o no existe\n"); exit(1); } hash_t* hash = hash_crear(free); if(!hash){ liberar(hash, archivo1, archivo2); exit(1); } ssize_t len1 = 0, len2=0; size_t capacidad = 0; char* linea1 = NULL; char* linea2 = NULL; while((len2 = getline(&linea2, &capacidad, archivo2 ) > 0)){ char* campo_1 = obtener_campo1(linea2); if(!hash_guardar(hash, campo_1, linea2)){ liberar(hash, archivo1, archivo2); exit(1); } free(campo_1); linea2 = NULL; } while((len1 = getline(&linea1, &capacidad, archivo1 ) > 0)){ char cadena[MAX_LEN]; char* campo_1 = obtener_campo1(linea1); if(hash_pertenece(hash, campo_1)){ char* aux = cadena; acoplar(&aux, linea1, (char*)hash_obtener(hash, campo_1)); printf("%s", cadena); } free(campo_1); } liberar(hash, archivo1, archivo2); free(linea1); free(linea2); return 0; }
base_t *base_crear(){ //creo la base base_t* base = malloc(sizeof(base_t)); if (base == NULL) return NULL; //creo los componentes de la base base->mapa = grafo_crear(); base->fabricas = hash_crear((hash_destruir_dato_t)destruir_fabrica); base->cerradofabricas = heap_crear((cmp_func_t)fabrica_cierra_primero); base->fabricasavisitar = lista_crear(); //verifico si los componentes se crearon correctamente if ((base->mapa==NULL) || (base->fabricas==NULL) || (base->cerradofabricas==NULL) || (base->fabricasavisitar==NULL)){ if (base->mapa!=NULL) grafo_destruir(base->mapa); if (base->cerradofabricas!=NULL) heap_destruir(base->cerradofabricas,NULL); if (base->fabricasavisitar!=NULL) lista_destruir(base->fabricasavisitar,NULL); if (base->fabricas!=NULL) hash_destruir(base->fabricas); return NULL; } base->capacidad = 0; base->polonorte = 0; //todo exitoso return base; }