קליטת char בודד מתאימה להקלקת תו בודד.
אם אתה רוצה לתפוס את כל הקייסים האפשריים, אתה יכול לקלוט מחרוזת ואז לרוץ עליה ולוודא שמדובר במספרים, אבל זה מיותר כיוון שאתה יודע מראש שהקלט שלך לא יעבור את התו הבודד (כלומר, האופציות הן ספרה אחת).
אתה יכול לקלוט את הבחירה שלך למשל ב getchar ואז ברגע שהמשתמש לוחץ במקלדת על המקש, זה ישר נקלט (ללא צורך לחכות ל enter). זה יפתור לך את הבעיה כיוון שגם אם ינסה להכניס "26", התפריט יטפל ב "2" לפני שיספיק ללחוץ על 6.
אם אתה רוצה לאפשר למשתמש ללחוץ על כל צירוף אפשרי, ואז enter, אתה יכול להכניס את הקלט למחרוזת של X תווים כך תוכל לבדוק מה המשתמש הכניס לך.
נגיד משהו כזה:
זהירות - ספויילר!
קוד PHP:
#include <stdio.h> #include <string.h>
int main () { int exit=0; char choice[10];
while (!exit) { printf("enter a number\n"); fflush(stdin); scanf("%s", choice); if ((strlen(choice) == 1) && (choice[0] > '1') && (choice[0] < '7')) switch (choice[0]) { case '1': { printf("1\n"); break; } case '2': { printf("2\n"); break; } case '3': { printf("3\n"); break; } default: { printf ("worng input\n"); exit=1; break; } } else printf ("illegal choice...\n"); } }