Menu główne aplikacji za pomocą konstrukcji CASE
Ostatnio zmodyfikowano 2016-12-30 20:35
NiNJAxFREEZu Temat założony przez niniejszego użytkownika |
Menu główne aplikacji za pomocą konstrukcji CASE » 2016-12-30 20:08:16 Witam! Napotkałem bardzo na dziwną rzecz pisząc swoją aplikację. Program obsługuje prostą bazę danych w pliku tekstowym i tworzę teraz menu główne ów programu. Problem pojawia się w konstrukcji CASE. int main( void ) { checkFile(); char menuDigit; bool loopFlag = 0; printf( "\tWitaj w programie\n\n" ); for(;; ) { printf( "Wybierz numer operacji\n" ); printf( "1. Dodaj nowy rekord\n" ); printf( "4. Sprawdz spojnosc pliku\n" ); printf( "6. Wyjscie\n" ); menuDigit = getchar(); switch( menuDigit ) { case '1': { addEntry(); break; } case '4': { system( "cls" ); checkFile(); break; } case '6': { loopFlag = 1; break; } default: { system( "cls" ); printf( "Podano zly numer\n" ); break; } } if( loopFlag ) break; } return 0; }
Mianowicie - Wprowadzając 1 do konsoli program poprawnie przechodzi do procedury addEntry zawartej w osobnym pliku nagłówkowym. Dobrze działa też wyjście z aplikacji wybieranie przez cyfrę 6. Natomiast kiedy wprowadzam cyfrę 4, program zamiast przejść do procedury checkFile wyświetla napisaną w przypadku default informacje o niewłaściwym numerze. Czy ktoś może mi to wytłumaczyć? |
|
pekfos |
» 2016-12-30 20:23:51 Gdy zatwierdzasz znak enterem, ten enter, znak nowej linii, też jest podawany na wejście. Przez to, że czyścisz ekran, nie widzisz, że wykonywane są 2 polecenia zamiast jednego. |
|
NiNJAxFREEZu Temat założony przez niniejszego użytkownika |
» 2016-12-30 20:25:38 Faktycznie, dalej już sobie poradzę, dzięki za pomoc! Ale nadal zastanawia mnie, dlaczego tylko dla czwórki nie działało... Ktoś ma jakiś pomysł? |
|
pekfos |
» 2016-12-30 20:35:05 Kwestia implementacji addEntry(). W przypadku wyjścia, od razu wychodzisz z programu. Czwórka pewnie nie pobiera niczego z wejścia, więc ten znak nowej linii dotrwał do ponownego pytania o akcję. |
|
« 1 » |