Wprowadzenie elementów do tablicy z możłiwością poprawki.

0

Hej wszystkim, mam pewien problem. Wprowadzam elementy do tablicy, konkretniej liczby całkowite różne od zera. Pierwotnie zabezpieczyłem się przed wprowadzeniem czegoś innego, ale sposób poniższy wymusza zamknięcie programu i zaczęcie od początku, co nie do końca mnie satysfakcjonuje.

    while (1)
    {
        if (scanf("%i", &tab[c])!=1)
        {
        printf("BLAD_DANYCH - wprowadz liczbe jeszcze raz");
        return 0;
        }
        if (tab[c]==0) break;
        c++;
    }

Próbuję zrobić tak, żeby w przypadku, w którym ktoś wprowadzi coś innego niż liczba, użytkownik miał szansę poprawienia tej konkretnej wartości, bez zaczynania od nowa. Sprawdzałem już masę sposobów, z innymi pętlami z whilem przy skanie ale zawsze coś jest nietak, nierzadko prowadzi to do nieskończonej pętli. Z góry dziękuję za pomoc.

1
while (scanf("%i", &tab[c]) != 1) {
    // zle wprowadzone dane
    printf("BLAD_DANYCH - wprowadz liczbe jeszcze raz");
}
// dobrze wprowadzone dane

dlaczego to miałoby nie działać?

0
    while (1)
    {
        while (scanf("%i", &tab[c])!=1)
        {
        printf("BLAD_DANYCH - wprowadz liczbe jeszcze raz");
        }
        if (tab[c]==0) break;
        c++;
    } 

Przy czymś takim pętla w nieskończoność pisze o tym błędzie danych. (Jak coś to ciąg ma się kończyć jak ktoś wprowadzi zero.)

1 użytkowników online, w tym zalogowanych: 0, gości: 1