Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Menu główne aplikacji za pomocą konstrukcji CASE

Ostatnio zmodyfikowano 2016-12-30 20:35
Autor Wiadomość
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.
C/C++
int main( void )
{
    checkFile();
    char menuDigit;
    bool loopFlag = 0;
   
    printf( "\tWitaj w programie\n\n" );
    for(;; ) //Główne menu
    {
        printf( "Wybierz numer operacji\n" ); //Nagłówek
        printf( "1. Dodaj nowy rekord\n" ); //Dodawanie nowego rekordu
        printf( "4. Sprawdz spojnosc pliku\n" ); //Sprawdzanie spoójnosci pliku i ilosci rekordów
        printf( "6. Wyjscie\n" );
       
        menuDigit = getchar(); //Wybór opcji
        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ć?
P-155713
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.
P-155714
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ł?
P-155715
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ę.
P-155717
« 1 »
  Strona 1 z 1