2017-03-01 1 views
0

ich etwas Hilfe brauchen würde, darüber, wie isdigit() in diesem Beispiel verwenden:Verwenden isdigit in C-Programmierung

#include <stdio.h> 
#include <stdlib.h> 
#include <ctype.h> 
int main() 
{ 
    int usr_option; 
    do 
    { 
     printf("\t\t\t************************MENU***********************\n"); 
     printf("\t\t\t*** 1. Enter Code\t\t\t\t***\n"); 
     printf("\t\t\t*** 2. Encrypt code and verify if correct\t***\n"); 
     printf("\t\t\t*** 3. Decrypt code\t\t\t\t***\n"); 
     printf("\t\t\t*** 4. Display number of times code was enter\t***\n"); 
     printf("\t\t\t***\t\t(i) Successfully\t\t***\n"); 
     printf("\t\t\t***\t\t(i) Unsuccessfully\t\t***\n"); 
     printf("\t\t\t*** 5. Exit Program\t\t\t\t***\n"); 
     printf("\t\t\t***************************************************\n"); 
     printf("\nPlease enter your option from the menu: "); 
     scanf("%d", &usr_option); 
     if (isdigit(usr_option)) 
     { 
      //Inside here is my switch case e.g switch(usr_option){/*code*/} 
     } 
     else 
     { 
     printf("Need to enter a digit\n"); 
     }   
    }//end do while 
    while(usr_option != 5); 
    return 0; 
} 

Wie kann ich diesen Code implementieren, um nicht in eine Endlosschleife zu gehen? Ich habe verschiedene Möglichkeiten ausprobiert, aber es scheint, als wolle es nicht funktionieren. Ich verwende die Compiler und Codeblocks Sublime Text 3.

Antwort

0

Wenn Sie eine Nummer über scanf("%d", &usr_option); gelesen haben, dann Sie nicht is_digit() zu verwenden, brauchen Sie können mit nur if oder switch z.B.

switch(usr_option) 
{ 
    case 1: enter_code(); break; 
    case 2: encrypt(); break; 

Sie brauchen nur is_digit, wenn Sie überprüfen, ob Zeichen in einer Zeichenfolge Ziffern sind oder nicht.

heißt '1' != 1

+1

Sie sollten noch den Rückgabewert von 'scanf' überprüfen. Wenn es sich von "1" unterscheidet, enthält "usr_option" zufällige Daten. – IInspectable

+0

danke für die Information – Josephy22