infinite loop
Zastanawialem sie ostatnio czemu feof() nie jest dobrym straznikiem petli i zaczalem odkrywac funkcje I/O na nowo, a taka ciekawostke wydobylem ostatnio :
Kod:
int n;
while(1) {
printf("enter a number: ");
if(scanf("%d", &n) == 1)
break;
printf("try again: ");
}
printf("you typed %d\n", n);
W wolnym tlumaczeniu chodzi tu o to ze funkcja scanf ma ustawiony znacznik formatowania na int, a co jesli odczyta char? No wlasnie, bedzie konflikt konwersji, ktory spowoduje brak przesuniecia po buforze danych. Czyli jesli zamiast 123 wprowadze abc, to bufor tkwil bedzie caly czas na znaku 'a' - a funkcja scanf() bedzie przekonana ze 'a' to dopiero co wprowadzona wartosc, ktora z racji tego ze jest bledna - bedzie musiala byc wprowadzona na nowo i znowu i znowu i znowu.. Tyle ze nikt nie bedzie mogl juz tej wartosci wprowadzic na nowo bo petla juz wczesniej 'poszla w tango'.
Moze komus sie przyda.
Pozdro.
" Wszystko, co ma początek, ma też koniec. Widzę nadchodzący koniec. Widzę rozciągającą się ciemność. Widzę śmierć ."