/* 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; }