diff --git a/cv5/program.c b/cv5/program.c index b517c01..dd82770 100644 --- a/cv5/program.c +++ b/cv5/program.c @@ -1,6 +1,7 @@ #include #include #include +#include #define SIZE 100 @@ -34,7 +35,7 @@ int main() { memset(line, 0, SIZE); char *r = fgets(line, SIZE, stdin); - // check if the line is empty + // check if the line is empty or just contains newline character if (r == NULL || (r[0] == '\n' && strlen(r) == 1)) { // end of input break; @@ -43,19 +44,22 @@ int main() { // parse the string and extract number of votes and student name int votes; char name[SIZE]; - if (sscanf(line, "%d %[^\n]", &votes, name) != 2) { - // error, input was not in expected format - // print error message and exit - break; + + // check if sscanf successfully parsed the input + if (sscanf(line, "%d %[^\n]", &votes, name) != 2 || votes < 0) { + // error, input was not in expected format or votes are negative + // print error message and continue to next line + fprintf(stderr, "Nepodarilo nacitat nic\n"); + continue; } // check if this student already exists - int found = 0; + bool found = false; for (int i = 0; i < size; i++) { if (strcmp(students[i].name, name) == 0) { // add votes to existing student students[i].votes += votes; - found = 1; + found = true; break; } }