Example #1
0
/* Main function. */
int main(int argc, char *argv[]) {

    /* Local variables. */
    char option = 'x';
    int exitValue;
    char *fileName;
    FILE *employeeFile;
    employee *employees;
    float total = 0;

    // Validation: Number of arguments from console.
    if (argc != 2) {
        printf("Error: Numero de parametros invalido.\nDebe iniciar asi: ./taller.out <archivo.csv>\n");
		exit(0);
    }
    
    fileName = argv[1];
    
    employeeFile = fopen(fileName, "r");
    if(employeeFile == NULL) {
        printf("No se pudo abrir el archivo\n");
        exit(0);
    }
    
    numEmployees = getNumEmployees(employeeFile);
    
    if (numEmployees <= 0) {
        printf("Error: No hay trabajadores en el archivo\n");
		exit(0);
    }
    
    printf("Hay %d trabajadores en el archivo\n", numEmployees);
    
    employees = (employee *)malloc(sizeof(employee) * numEmployees);

    do {
        getOption(&option);
        switch (option) {
            case 'a':
                registerEmployees(employees, employeeFile);
                break;
            case 'b':
					 showEmployees(employees);
                break;
            case 'c':
					 total = getTotal(employees);
                     printf("TOTAL: %.2f", total);
                break;
            case 'q':
                printf("Saliendo del programa...\n");
                break;
            default:
                printf("La opcion '%c' no es valida. Volviendo al menu.\n", option);
                break;
        }
    } while(option != 'q');
    
    exitValue = fclose(employeeFile);
    if(exitValue == 0) {
        printf("se cerro el archivo\n");
    }
    
    /* Free memory. */
    free(employees);


    return 0;
}
/* Main function. */
int main(int argc, char *argv[]) {
    
    /* Variables locales. */
    char option = 'x';
    char (*nombres)[MAX_CHARACTER_NAME];//arreglo de caracteres de tamaño 50 x posición
    float *salarios;//arreglo de salarios
    float total = 0;//total de salarios
    
    /* Obtener informacion. */
    
    /* Hacer operaciones. */
    // Validación: Número de argumentos traídos de consola.
    if (argc != 2) {
        printf("\nError: Numero de parametros invalido.\nDebe iniciar asi: ./taller.out <numero maximo de trabajadores>\n");
		exit(0);
    }
    
    // Obtengo el argumento y lo convierto a número
    max_employees = atoi(argv[1]);//convierte lo que recibe a número
    setbuf(stdin, NULL); //limpiar el bufer
    printf("\nEl valor ingresado fue: %d\n", max_employees);
    
    
    /* Obtener espacio dinámico en memoria. */
    nombres = (char (*)[MAX_CHARACTER_NAME]) malloc(sizeof(char[MAX_CHARACTER_NAME]) * max_employees);
    salarios = (float *) malloc(sizeof(float) * max_employees);
    
    //Validar que el número ingresado sea positivo
    if(max_employees<=0){
        printf("\nError: El número de empleados ingresado no es válido,\ndebe ser un número mayor a cero.\n");
        exit(0);
    }else{
        printf("La lista tendrá una cantidad máxima de %d trabajadores\n", max_employees);
        do{
        getOption(&option);
        printf("\nLa opción escogida fue %c\n", option);
        switch (option){
            case 'a':
            registerEmployees(nombres, salarios);
            break;
            case 'b':
            printf("El salario total es: ");
            getTotal(salarios, &total);
            break;
            case 'c':
            showList(nombres, salarios, &total);
            break;
            case 'q':
            printf("\nSaliendo del programa..\n\n");
            break;
            default:
            printf("La opción %c escogida no es válida, seleccione de nuevo.\n", option);
        }
    }while(option !='q');
    }
    
    /* Liberar memoria. */
    free(nombres);
    free(salarios);
    
    /* Mostrar resultados. */
    
    return 0;
}