1 2 #include "read_file.h" 3 4 5 status_t read_file(FILE *src, uint *country, uint *date, uint *infected) 6 { 7 8 // Esta variable es para saber de que tipo de dato estamos hablando, si es un 9 // codigo de pais, una fecha o el numero de infectados; 10 data_t data; 11 12 size_t i, j; 13 // status_t st; 14 15 char buff1[SIZE_OF_BUFF1]; 16 char buff2[SIZE_OF_BUFF2]; 17 18 clean_buffer(buff1, SIZE_OF_BUFF1); 19 clean_buffer(buff2, SIZE_OF_BUFF2); 20 21 // char time_s[TIME_MAX_DIGITS]; 22 23 // Lee de el archivo de entrada linea por linea y va guardando las 24 // lineas en buff1 hasta que se terminen; 25 if(fgets(buff1, sizeof(buff1), src) == NULL) 26 return END_OF_INPUT_FILE; 27 28 // Este 'if' es para evitar la primer linea que no contiene ningun 29 // tipo de dato; 30 for(i = 0, j = 0, data = PAIS; buff1[i] != '\0'; i++) 31 { 32 if((buff1[i] == ',')) 33 { 34 i++; 35 if(data == PAIS) 36 *(country) = atoi(buff2); 37 38 else if (data == DATE) 39 *(date) = atoi(buff2); 40 41 data++; 42 j = 0; 43 clean_buffer(buff2, SIZE_OF_BUFF2); 44 45 } else if (buff1[i] == '\n') { 46 if(data != INFECTED) 47 return ERROR_DATA_ON_FILE_MISSING; 48 49 data = PAIS; 50 *(infected) = atoi(buff2); 51 clean_buffer(buff2, SIZE_OF_BUFF2); 52 } 53 switch(data) 54 { 55 case PAIS: buff2[i] = buff1[i]; break; 56 case DATE: buff2[j] = buff1[i]; j++; break; 57 case INFECTED: buff2[j] = buff1[i]; j++; break; 58 } 59 } 60 return OK; 61 } 62 63 status_t clean_buffer(char *buffer, size_t size) 64 { 65 if(buffer == NULL) 66 return ERROR_NULL_POINTER; 67 68 size_t i; 69 for(i = 0; i < size; i++) 70 buffer[i] = '\0'; 71 72 return OK; 73 }