9511_project01

project 1 for algorithms & programming I (9511) prof. Cardozo
Index Commits Files Refs README
commit ad17a09d8bd8fbb023416636024f43e076d4ff09
parent 64040f84ff4df9058738427b9c22ab636edcfbed
Author: klewer-martin <martin.cachari@gmail.com>
Date:   Thu, 11 Feb 2021 02:11:29 -0300

Update;

Diffstat:
MMakefile | 2+-
Mload_country_codes.c | 82+++++++++++++++++++++++++++++++++++++------------------------------------------
Mmacros.h | 2+-
Mmain.c | 8++++++--
4 files changed, 46 insertions(+), 48 deletions(-)
diff --git a/Makefile b/Makefile
@@ -1,5 +1,5 @@
 CC = gcc
-CFLAGS = -std=c99 -Wall -pedantic
+CFLAGS = -std=c99 -Wall -Wextra -pedantic
 
 all: main clean
 
diff --git a/load_country_codes.c b/load_country_codes.c
@@ -1,46 +1,11 @@
-// Carga en memoria los codigos de los paises de el archivo de nombre 
-// "COUNTRY_CODES_FILE_NAME" definido en macros.h y devuelve un puntero
-// a dicho arreglo con los codigos cargados;
+// Carga en el arreglo 'country_codes' los codigos de los paises de el archivo 
+// de nombre "COUNTRY_CODES_FILE_NAME" (definido en macros.h) ubicado en el 
+// directorio desde el que se ejecuta el programa;
 
 
 #include "load_country_codes.h"
 
 
-status_t clean (char *buffer, size_t size)
-{
-    size_t i;
-    i = 0;
-
-    if(buffer == NULL)
-        return ERROR_NULL_POINTER;
-
-    while(i < size) {
-        buffer[i] = '\0';
-        i++;
-    }
-    return OK;
-}
-
-//    Inicializa el arreglo alocando el caracter '\0' en todas las posiciones;
-status_t empty_country_codes(char country_codes[COUNTRIES_NUMBER][ARRAYS_LENGTH]) 
-{
-    size_t i, j;
-    for(i = 0; i < COUNTRIES_NUMBER; i++)
-        for(j = 0; j < (ARRAYS_LENGTH - 1); j++) {
-            country_codes[i][j] = '\0';
-        
-        country_codes[i][ARRAYS_LENGTH - 1] = '\n';
-        }
-
-    return OK;
-}
-
-
-//    Abre el archivo "COUNTRY_CODES_FILE_NAME" y lee linea por linea hasta llegar
-//    al final, mientras lee lo va guardando en un buffer que recorre caracter por
-//    caracter en busqueda de el character separador de datos, en este caso ',', 
-//    mientras recorre el buffer va separando los datos y los guarda en la variable
-//    que corresponda;
 status_t load_country_codes(char country_codes[COUNTRIES_NUMBER][ARRAYS_LENGTH])
 {
     FILE *fp;
@@ -48,8 +13,8 @@ status_t load_country_codes(char country_codes[COUNTRIES_NUMBER][ARRAYS_LENGTH])
     empty_country_codes(country_codes);
 
     char *buff;
-    char buff_2[INITIAL_SIZE];
-    buff_2[INITIAL_SIZE] = '\0';
+    char buff2[INITIAL_SIZE];
+    buff2[INITIAL_SIZE] = '\0';
 
     int country_code;
     char country_name[INITIAL_SIZE];
@@ -58,7 +23,7 @@ status_t load_country_codes(char country_codes[COUNTRIES_NUMBER][ARRAYS_LENGTH])
     size_t i, j;
     part_t part;
         
-    buff = malloc(INITIAL_SIZE);
+    buff = (char *)malloc(INITIAL_SIZE);
     
     if((fp = fopen(COUNTRY_CODES_FILE_NAME, "r")) == NULL) {
         return ERROR_LOADING_COUNTRY_CODES;
@@ -78,12 +43,12 @@ status_t load_country_codes(char country_codes[COUNTRIES_NUMBER][ARRAYS_LENGTH])
 
             switch(part)
             {
-                case CODE: buff_2[i] = *(buff + i); break;
+                case CODE: buff2[i] = *(buff + i); break;
                 case NAME: country_name[j] = *(buff + i); j++; break;
             }
         }
-        country_code = atoi(buff_2);
-        clean(buff_2, INITIAL_SIZE);
+        country_code = atoi(buff2);
+        clean(buff2, INITIAL_SIZE);
         strcpy(country_codes[country_code], country_name);
     }
 
@@ -93,3 +58,32 @@ status_t load_country_codes(char country_codes[COUNTRIES_NUMBER][ARRAYS_LENGTH])
     return OK;
 }
 
+
+status_t clean (char *buffer, size_t size)
+{
+    size_t i;
+    i = 0;
+
+    if(buffer == NULL)
+        return ERROR_NULL_POINTER;
+
+    while(i < size) {
+        buffer[i] = '\0';
+        i++;
+    }
+    return OK;
+}
+
+//    Inicializa el arreglo alocando el caracter '\0' en todas las posiciones;
+status_t empty_country_codes(char country_codes[COUNTRIES_NUMBER][ARRAYS_LENGTH]) 
+{
+    size_t i, j;
+    for(i = 0; i < COUNTRIES_NUMBER; i++)
+        for(j = 0; j < (ARRAYS_LENGTH - 1); j++) {
+            country_codes[i][j] = '\0';
+        
+        country_codes[i][ARRAYS_LENGTH - 1] = '\n';
+        }
+
+    return OK;
+}
diff --git a/macros.h b/macros.h
@@ -9,7 +9,7 @@
 #define OUTPUT_ARGUMENT            "-out"
 
 #define INITIAL_SIZE        1000
-
+#define MAX_NAME_LENGTH     32
 typedef unsigned int uint;
 typedef unsigned long ulong;
 
diff --git a/main.c b/main.c
@@ -11,7 +11,8 @@
 //    Lee texto de un archivo con extension .csv cuyo nombre recibe 
 //    como argumento; el cual contiene solo numeros que representan 
 //    un pais, una fecha y una cantidad de infectados y lo guarda en
-//    un archivo de texto cuyo nombre tambien recibe como argumento.
+//    un archivo de texto cuyo nombre tambien recibe como argumento 
+//    con un formato humanamente entendible.
 
 
 #include "main.h"
@@ -29,7 +30,7 @@ int main(int argc, char * argv[])
 
 //    Las siguientes variables son para guardar los nombres de los archivos de 
 //    entrada y salida luego de validar los argumentos
-    char src[32], dest[32];
+    char src[MAX_NAME_LENGTH], dest[MAX_NAME_LENGTH];
 
     FILE *fpi, *fpo;
     uint country, date, infected;
@@ -77,6 +78,8 @@ int main(int argc, char * argv[])
         }
     }
 
+
+//    Si hubo algun error al leer o escribir el archivo va a imprimir un error
     if((st != OK) && (st != END_OF_INPUT_FILE)) {
         fclose(fpi);
         fclose(fpo);
@@ -84,6 +87,7 @@ int main(int argc, char * argv[])
         return st;
     }
 
+//    El la ultima linea de 'infectados por mes'
     fprintf_infected_monthly(fpo);
 
     fclose(fpi);