getchar() giver 2 chars??
Når jeg kører nedestående program (forkortet) og indtaster fx [2][enter] vises menuen 2 gange...Første gang udføres den tilsvarende funktion (fx delBook()) og derefter vises menuen igen som den skal.
Her går det galt. Det lader til at getchar() opfatter mit oprindelige [enter]-tryk som næste karakter og derfor udføres default switch koden som giver en fejlmeddelelse.
Hvad gør jeg får at få getchar() til blot at fange mit [2]-tryk og ikke og mit [enter]-tryk ???
Et screen dump kan ses under koden.
========= KODE ======================================
#include <stdio.h>
void loadCat() { printf("loadCat");}
void delBook() { printf("delBook");}
void saveCat() { printf("saveCat");}
void sortCat() { printf("sortCat");}
int main()
{
char main_choice;
do {
//display main menu
printf("\n\n1. Load catalogue from file\n");
printf("2. Delete book from catalogue\n");
printf("3. Save catalogue to file\n");
printf("4. Sort and display catalogue\n");
printf("5. Quit\n");
printf("\n >> ");
main_choice = getchar();
printf("\n%d", main_choice);
printf("\n%d\n", main_choice);
switch (main_choice) {
case '1': loadCat(); break;
case '2': delBook(); break;
case '3': saveCat(); break;
case '4': sortCat(); break;
case '5': break;
default:
printf("Invalid choice! Valid inputs are: [1,2,3,4,5]");
break;
}
}while (main_choice != '5');
return 0;
}
========= SCREEN DUMP ======================================
33> bookcat
1. Load catalogue from file
2. Delete book from catalogue
3. Save catalogue to file
4. Sort and display catalogue
5. Quit
>> 2
delBook
1. Load catalogue from file
2. Delete book from catalogue
3. Save catalogue to file
4. Sort and display catalogue
5. Quit
>> Invalid choice! Valid inputs are: [1,2,3,4,5]
1. Load catalogue from file
2. Delete book from catalogue
3. Save catalogue to file
4. Sort and display catalogue
5. Quit
>>