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:
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) {