2012-01-18 2 views
-1

Я пытаюсь использовать один код в C, где мне нужно проверить, является ли значение, вводимое пользователем целым числом или нет. Я попытался isdigit(), но это не сработало. Могу ли я ожидать от вас помощи.Как узнать, вставлено ли значение integer

while(1) { 

    printf(" \n -------------Enter your choice --------------------------\n "); 
    printf("\n 1. Insertion \n 2. Preorder \n 3. Inorder \n 4. Postorder \n 5. Deletion \n 6. Search \n 7. Exit \n "); 
    scanf ("%d", &save_the_input); 

    switch(save_the_input) { 

     case 1 : 
      printf(" \n......... Please enter the numbers to create the binary tree....... \n"); 
      scanf ("%d", &number_of_nodes); 

      printf("\n...... Please enter the numbers one by one... \n"); 

      for (iterator = 0; iterator < number_of_nodes; iterator++) { 
       scanf ("%d", &user_input); 
       if ((user_input < 0)) { 
        printf(" ------- You have either entered a Character or a Negative number ----- \n "); 
        printf(" ------- Please enter the Positive integer values-------------\n "); 
        main(); 
       } 
       else { 
        root_node = insert (root_node, user_input); 
        printf("\n"); 
        printf("data element inserted is %d \n ", user_input); 
       } 
      } 
      break; 
+4

Где код? – Jon

+1

Как вы получаете стоимость? В строке? Можете ли вы показать нам код, который у вас есть? –

+0

То, как я обычно это делаю, это использовать 'strtod()' – fge

ответ

1

Вы можете использовать sscanf

int num; 
ret = sscanf(line,"%d",&num); 
if (ret == 1) { 
    // num contains number 
} else { 
    // not a number 
} 
+0

Что делать, если я введу '1234foobar'? Это не целое число. –

0
for (i = 0; i < strlen(s); ++i) 
{ 
    if (!isdigit(s[i])) 
    { 
     return false; 
    } 
    return true; 
} 
Смежные вопросы