wyjasnienie pewnej podstawowej reczy

0

witam! jestem poczatkujacym programista C ... wczesniej troche pisalem w Pascalu. mam taki problem. ponizej wklejam kod ktory znalazlem w ktoryms z kursow i wiem co tak naprawde jest wynikiem tych operacji jednak nie moge dokladnie rozgrysc dlaczego tak jest. prosze o wyjasnienie linijki po linijce co i jak. jak dla blondynki :D

printf("enter an integer: ");
while(scanf("%i", &j) != 1)
{
while((ch = getchar()) != '\n')
;
printf("enter an integer: ");
}

to jest przyklad na to zeby podany znak byl na pewno typu integer. znam inny sposob na pobranie znaku ktory bedzie typu integer lecz interesuje mnie tez w jaki sposob dziala powyzszy kod. z gory dzieki za odp.

tylko nie mowcie ze nikt nie wie! :)

interesuje mnie przede wszystkim ta linijka:

while((ch = getchar()) != '\n')
;

i jej znaczenie w tym kodzie.

0

while((ch = getchar()) != '\n')

To jets chyba coś takiego:
kiedy ch (czyli coś odebranego przez użytkownika getchar) jest nierówne enterowi??? wtedy coś tam

Chyba tak jest, ja też jestem początkującym w C++

0

ja rozumiem znaczenie kazdej linijki z osobna jednak jako calosc - nie widze w tym sensu... nie moge tego sczaic.

0

Spokojnie, nie poganiaj. Ludzie mają też inne zajęcia niż programowanie.

printf("enter an integer: ");  /* wypisuje tekst :P *
while(scanf("%i", &j) != 1)  /* dopóki liczba wczytanyczytywanych liczb całkowitych jest różna od 1, czyli w praktyce nie wczytano rzadnej liczby to: */
        {
                while((ch = getchar()) != '\n') /* odczytaj z bufora wszystkie znaki aż do znaku końca lini. Innymi słowy zczytaj wszystkie śmieci */
                            ;
                printf("enter an integer: "); /* męcz użytkownika do usranej śmierci, aż wpisze jedną poprawną liczbę :P */
        }

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