Dajmy sobie taki kod:
int x;
char c;
scanf("%d", &x);
scanf("%c", &c);
printf("%d %c", x, c);
Jak to się dziej, że gdy wpiszemy dowolną liczbę, to na wyjściu dostajemy tę liczbę i liczbę 10?
Oczywiście wiem, ze 10 to znak nowej linii. Jednak nie rozumiem mechanizmu scanfa. Myślałem, że scanf przy takim formatowaniu jak "%d" wczytuje kolejne znaki, aż napotka znak, który nie jest cyfrą i wtedy przerwa działanie. Ale gdyby tak było, to drugi scanf już nie mógłby odczytać tego następnego znaku po ostatniej cyfrze, czyli znaku nowej linii. Czy scanf jakoś odsyła do bufora ten znak, że potem drugi scanf też może go napotkać?
Jak w takich okolicznościach napisać taki program:
wejście składa się z wielu linii w formacie:
"%c %d" lub "%c"
tzn, najpierw jest zawsze jakiś znak, a w zależności od tego, jaki to znak, może w tej linii pojawić się jeszcze liczba.
jak wczytać taki wiersz?