int main() { char* linea1 = leer_linea(stdin); char* linea2 = leer_linea(stdin); printf("Linea: %s\n", linea1); printf("Linea: %s\n", linea2); free(linea1); free(linea2); }
int main(int argc, char **argv) { char * linea; while(1){ printf("shell$ "); //Salir si pulsamos CTRL+D o introducimos EOF if((linea=leer_linea(stdin))==NULL){ printf("\n"); exit(0); } printf("Introduciste: %s\n", linea); free(linea); } return 0; }
/* Leer entrada e intentar formatear comandos */ void leer_entrada(maquina_votacion_t* maquina) { bool terminar = false; while(!terminar) { char* linea = leer_linea(stdin); if(!linea) { terminar = true; continue; } // 5 = cantidad minima de caracteres del comando mas corto valido. // if(strlen(linea) < 5) { free(linea); continue; } size_t columnas = obtener_cantidad_columnas(linea, ' '); fila_csv_t* fila = parsear_linea_csv(linea, columnas, true); if(!fila) { free(linea); continue; } // CHETISIMO. char* entrada[COMANDOS_PARAMETROS_MAX+1]; for(size_t i=0; i<COMANDOS_PARAMETROS_MAX+1;i++) entrada[i] = obtener_columna(fila, i); for(size_t i=0;i<COMANDOS_CANTIDAD;i++) if( strcmp(entrada[0], COMANDOS[i]) == 0 ) if( (*COMANDOS_FUNCIONES[i])(maquina, entrada) ) imprimir_mensaje_ok(); destruir_fila_csv(fila, true); free(linea); } }
mesa_t* abrir_mesa(char *mesa_electoral, char *padron) { mesa_t* la_mesa; if( !(la_mesa = malloc(sizeof(mesa_t))) ) return NULL; la_mesa->estado = false; la_mesa->boletas_en_mesa = lista_crear(); la_mesa->personas_a_votar = lista_crear(); la_mesa->padron = lista_crear(); if( !la_mesa->boletas_en_mesa || !la_mesa->personas_a_votar || !la_mesa->padron ) { fprintf(stderr, "ERROR1\n"); return NULL; } if( mesa_electoral == NULL || padron == NULL ) { fprintf(stderr, "ERROR1\n"); lista_destruir(la_mesa->boletas_en_mesa, NULL); lista_destruir(la_mesa->personas_a_votar, NULL); lista_destruir(la_mesa->padron, NULL); free(la_mesa); return NULL; } FILE *postulantes, *votantes; if( !(postulantes = fopen(mesa_electoral, "r")) ) { fprintf(stderr, "ERROR2\n"); lista_destruir(la_mesa->personas_a_votar, NULL); lista_destruir(la_mesa->boletas_en_mesa, NULL); lista_destruir(la_mesa->padron, NULL); free(la_mesa); return NULL; } if( !(votantes = fopen(padron, "r")) ) { fprintf(stderr, "ERROR2\n"); fclose(postulantes); lista_destruir(la_mesa->personas_a_votar, NULL); lista_destruir(la_mesa->boletas_en_mesa, NULL); lista_destruir(la_mesa->padron, NULL); free(la_mesa); return NULL; } char *linea_fixeada; fila_csv_t* parseado; while( (linea_fixeada = leer_linea(postulantes)) != NULL ) { parseado = parsear_linea_csv(linea_fixeada, 5); boleta_t* nueva_boleta; if( ( nueva_boleta = malloc(sizeof(boleta_t)) ) == NULL ) { lista_destruir(la_mesa->boletas_en_mesa, NULL); lista_destruir(la_mesa->personas_a_votar, NULL); lista_destruir(la_mesa->padron, NULL); fclose(postulantes); fclose(votantes); free(la_mesa); return NULL; } nueva_boleta->IDpartido = atoi(obtener_columna(parseado, 0)); nueva_boleta->nombrePartido = strdup(obtener_columna(parseado, 1)); nueva_boleta->presidente = strdup(obtener_columna(parseado, 2)); nueva_boleta->gobernador = strdup(obtener_columna(parseado, 3)); nueva_boleta->intendente = strdup(obtener_columna(parseado, 4)); nueva_boleta->votos_recibidos[0] = 0; nueva_boleta->votos_recibidos[1] = 0; nueva_boleta->votos_recibidos[2] = 0; lista_insertar_ultimo(la_mesa->boletas_en_mesa, nueva_boleta); destruir_fila_csv(parseado, false); } while( (linea_fixeada = leer_linea(votantes)) != NULL ) { parseado = parsear_linea_csv(linea_fixeada, 2); votante_t* nuevo_votante; if( ( nuevo_votante = malloc(sizeof(votante_t)) ) == NULL ) { lista_destruir(la_mesa->boletas_en_mesa, destruir_boleta); lista_destruir(la_mesa->personas_a_votar, NULL); lista_destruir(la_mesa->padron, NULL); fclose(postulantes); fclose(votantes); free(la_mesa); return NULL; } nuevo_votante->tipoDNI = strdup(obtener_columna(parseado, 0)); nuevo_votante->numeroDNI = atoi((obtener_columna(parseado, 1))); nuevo_votante->voto_realizado = false; lista_insertar_ultimo(la_mesa->padron, nuevo_votante); destruir_fila_csv(parseado, false); } fclose(votantes); fclose(postulantes); return la_mesa; }