Пример #1
0
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);
}
Пример #2
0
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;
}
Пример #3
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);
	}
}
Пример #4
0
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;
}