示例#1
0
文件: uniq.c 项目: t0mixcs/TP-2
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;
}
示例#2
0
文件: join.c 项目: nee47/T-P-2
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;
}