9511_project01

project 1 for algorithms & programming I (9511) prof. Cardozo
Index Commits Files Refs README
commit 361811078dbbf696a4cb9932dcacd0acd4344719
parent 33ad6b3512b98db955193f36ba48eac0e2574870
Author: klewer-martin <martin.cachari@gmail.com>
Date:   Wed, 10 Feb 2021 18:39:53 -0300

Update: changed data type for country, date & infected, from unsigned
long to unsigned int, also arguments.c recived a mod in how argc was
judged to be wrong;

Diffstat:
MMakefile | 3+++
Marguments.c | 21++++++++++++++-------
Mmacros.h | 6+++---
Mmain.c | 2--
4 files changed, 20 insertions(+), 12 deletions(-)
diff --git a/Makefile b/Makefile
@@ -31,3 +31,6 @@ clean:
 
 run: 
     ./main -in input.csv -out output.txt
+
+run2: 
+    ./main -out output.txt -in input.csv 
diff --git a/arguments.c b/arguments.c
@@ -4,27 +4,29 @@
 //    archivos de entrada y salida en src y dest respectivamente;
 status_t validate_arguments(int argc, char * argv[], char * src, char * dest)
 {
-    if(argc == NO_CMD_ARGUMENTS)
-        return ERROR_INVOCATING_PROGRAM;
-    else if(argc == ONE_CMD_ARGUMENT)
+    if(argc < EXPECTED_CMD_ARGUMENTS || argc > EXPECTED_CMD_ARGUMENTS)
         return ERROR_INVOCATING_PROGRAM;
     else if(argv == NULL)
         return ERROR_NULL_POINTER;
 
-    int i;
     status_t inputFile, outputFile;
     inputFile = outputFile = IO_FILE_NOT_FOUND;
 
+    size_t i;
     for(i = 1; i < argc; i++) {
 //        Comprueba que el primer argumento sea INPUT_ARGUMENT ('-in');
         if(!strcmp(argv[i], INPUT_ARGUMENT)) {
             printf(INPUT_ARGUMENT_FOUND_MSG);
 
 //            Si el argumento que sigue es OUTPUT_ARGUMENT entonces hay un error
-//            en la invocacion de el programa;
+//            en la invocacion de el programa, y si el que le sigue a ese no es
+//            OUTPUT_ARGUMENT estamos ante un problema de orden de argumentos;
             if(!strcmp(argv[i + 1], OUTPUT_ARGUMENT))
                 return ERROR_INVOCATING_PROGRAM;
 
+//            else if(strcmp(argv[i + 2], OUTPUT_ARGUMENT))
+//                return ERROR_INVOCATING_PROGRAM;
+
 //            Si el primer argumento esta bien y el siguiente es una cadena entonces
 //            guarda en src la cadena e imprime dicha cadena;
             strcpy(src, argv[++i]);
@@ -36,11 +38,16 @@ status_t validate_arguments(int argc, char * argv[], char * src, char * dest)
 //        Procede de la misma forma pero para OUTPUT_ARGUMENT ('-out');
         } else if(!strcmp(argv[i], OUTPUT_ARGUMENT)) {
             printf(OUTPUT_ARGUMENT_FOUND_MSG);
+
             if(!strcmp(argv[i + 1], INPUT_ARGUMENT))
                 return ERROR_INVOCATING_PROGRAM;
 
+//            else if(strcmp(argv[i + 2], INPUT_ARGUMENT))
+//                return ERROR_INVOCATING_PROGRAM;
+
+
             strcpy(dest, argv[++i]);
-            printf(OUTPUT_FILE_NAME_MSG"'%s'\n", argv[i]);
+            printf(OUTPUT_FILE_NAME_MSG"'%s'\n", dest);
             outputFile = OK;
         }
     }
@@ -49,8 +56,8 @@ status_t validate_arguments(int argc, char * argv[], char * src, char * dest)
 //    de error;
     if((inputFile && outputFile) != OK)
         return ERROR_INVOCATING_PROGRAM;
-//        return IO_FILE_NOT_FOUND;
 
     return OK;
 }
 
+
diff --git a/macros.h b/macros.h
@@ -1,9 +1,9 @@
 #ifndef MACROS_H
 #define MACROS_H
 
-#define NO_CMD_ARGUMENTS    1
-#define ONE_CMD_ARGUMENT    2
-#define MAX_CMD_ARGUMENTS    5
+#define NO_CMD_ARGUMENTS        1
+#define ONE_CMD_ARGUMENT        2
+#define EXPECTED_CMD_ARGUMENTS    5
 
 #define INPUT_ARGUMENT            "-in"
 #define OUTPUT_ARGUMENT            "-out"
diff --git a/main.c b/main.c
@@ -25,7 +25,6 @@
 
 int main(int argc, char * argv[])
 {
-
     status_t st;
 
 //    Las siguientes variables son para guardar los nombres de los archivos de 
@@ -42,7 +41,6 @@ int main(int argc, char * argv[])
 //    Arreglo de arreglos de caracteres para guardar los codigos de los paises
     char country_codes[COUNTRIES_NUMBER][ARRAYS_LENGTH];
     
-
 //    Valida de que los argumentos sean correctos y guarda los nombres de los
 //    archivos de entrada y salida en src y dest respectivamente
     if((st = validate_arguments(argc, argv, src, dest)) != OK) {