W każdym obiegu pętli while tworzysz dwie zmienne flaga i flaga2. Zmienne te są zmiennymi lokalnymi bo są tworzone wewnątrz funkcji main. Zmienne lokalne tworzone są na stosie i jeśli nie przypiszesz im jakiś konkretnych wartości to wtedy będą miały przypadkowe wartości.
Kompilator ostrzega, że próbujesz użyć zmiennej lokalnej bez jej wcześniejszej inicjalizacji. Podczas tworzenia tych zmiennych przypisz im np. zerowe wartości.
I przenieś je poza while do funkcji main. Bo teraz to niepotrzebnie z każdym obiegiem pętli są wciąz tworzone na nowo.
------------------------ [ Dodano po: 10 minutach ]Chodzi ci o to, że ten fragment ci nie działa?
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Tak napisałeś program, że nie będzie działał.
No popatrz. Na początku zmienna keylock ma wartość równą zero. Po wciśnięciu klawisza ten warunek zostaje spełniony
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
W jego wnętrzu, zmiennej keylock przypisujesz wartość jeden. W każdym następnym obiegu pętli while ten warunek już nie będzie spełniony. Bo wartość keylock jest różna od zera. Więc jak ma się wykonać to co jest we wnętrzu tego warunku.