From d9aab389a1e373e86e4232c347153ee5f8beb0de Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Mon, 12 Nov 2018 14:46:02 -0300 Subject: [PATCH 1/2] fix problem when invalid data is passed via stdin --- src/sort.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/sort.c b/src/sort.c index ab49757..4c353cf 100644 --- a/src/sort.c +++ b/src/sort.c @@ -179,12 +179,12 @@ int main (int argc, char **argv) { for (i = 0; i < n; i++) { if (elegir) { opt = 0; - while (opt <= 1) { + fprintf(stdout, "Elegir elemento %lli: ", i + 1); + while (!fscanf(stdin, "%d", &opt)) { + // Falló, pide de nuevo después de limpiar stdin + while ((opt = getchar()) != '\n' && opt != EOF) { } + fprintf(stdout, "Número invalido! Tiene que ser mayor de 1!\n"); fprintf(stdout, "Elegir elemento %lli: ", i + 1); - fscanf(stdin, "%d", &opt); - if (opt <= 1) { - fprintf(stdout, "Número invalido! Tiene que ser mayor de 1!\n"); - } } array[i] = opt; } From 7bb163ae337c98066d41716e33306c130465bca3 Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Mon, 12 Nov 2018 14:46:02 -0300 Subject: [PATCH 2/2] fix problem when invalid data is passed via stdin --- src/sort.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/sort.c b/src/sort.c index ab49757..4c353cf 100644 --- a/src/sort.c +++ b/src/sort.c @@ -179,12 +179,12 @@ int main (int argc, char **argv) { for (i = 0; i < n; i++) { if (elegir) { opt = 0; - while (opt <= 1) { + fprintf(stdout, "Elegir elemento %lli: ", i + 1); + while (!fscanf(stdin, "%d", &opt)) { + // Falló, pide de nuevo después de limpiar stdin + while ((opt = getchar()) != '\n' && opt != EOF) { } + fprintf(stdout, "Número invalido! Tiene que ser mayor de 1!\n"); fprintf(stdout, "Elegir elemento %lli: ", i + 1); - fscanf(stdin, "%d", &opt); - if (opt <= 1) { - fprintf(stdout, "Número invalido! Tiene que ser mayor de 1!\n"); - } } array[i] = opt; }