Witam.
Próbuję wykorzystać getchar do wczytania liczby do tablicy korzystając z

i=1;
 n=((int)(getchar()))-48;
    while((n>=0)&&(n<10))
    {
        taba[i]=n;
        i+=1;5
        n=((int)(getchar()))-48;
        ilea+=1;
    }

tu wszystko działa raczej poprawnie, moje pytanie brzmi, czy da się to zrobić tak by przerywało pętlę, od razu gdy zostanie wpisane coś innego niż cyfra, a nie czekało na enter.

Druga część mojego problemu wiąże się z programem, który piszę do szkoły (właściwie to ten sam program), mam dwie tablice zapełnione jak wyżej (taba[] i tabb[]) i tabw[] do której mam umieścić wynik dodawania pisemnego, napisałem kod, który według mnie powinien to robić, lecz niestety w niektórych przypadkach podaje dziwne wyniki i od dłuższego czasu nie mogę znaleźć pomysłów dlaczego.


    for(i; i>0; i-=1)
    {
        tabw[i]+=taba[i]+tabb[i];
        if (tabw[i]>9){
        tabw[i-1]+=(taba[i]+tabb[i])/10;
        tabw[i]=(taba[i]+tabb[i])%10;
        }

    }

</del></del>

Pozdrawiam i z góry dziękuję za wszelką pomoc.

Edit: drobna zmiana kodu rozwiązała mi drugi problem, popełniałem wtedy bardzo prymitywny błąd i przypisywałem wartości bez odpowiednich sprawdzeń i się nadpisywały w złych miejscach, aktualnie kod wygląda tak

     for(i=ilea; i>0; i-=1)
    {   c=taba[i]+tabb[i]+tabw[i];
        if (c<10){
        tabw[i]=c;
        }
        else if (c>9){
        tabw[i-1]+=c/10;
        tabw[i]=c%10;
        }

    }

Nie mogę znaleźć powodu, dlaczego działa to źle dla liczb poprzedzonych zerami. Czy może to być spowodowane tym, że do wpisania drugiej liczby używam:


i=1;
scanf(" %1i",&n);
    while((n>=0)&&(n<10))
    {
        tabb[i]=n;
        i+=1;
        n=((int)(getchar()))-48;

    }

Jest to zaraz po wpisywaniu pierwszej liczby, liczby wpisuje się oddzielając spacją i gdy mają równą długość, i druga nie zaczyna się od zer to działa poprawnie (154 154 -> 308, 999 197 -> 1196, 001 111 -> 112 etc.) lecz jeżeli druga zaczyna się od zer to jest ona mnożona przez 10 (123 001 -> 133 zamiast 124 etc.)