2014-09-18 4 views
-1

Это моя программа.Проверьте правильность ввода в C

reprocess: 

    printf("Enter number: 1,2,3 "); 

    if(scanf("%d%c", &preproc, &term)!= 2 || term!= '\n'){ 
     printf("Invalid Input"); 
     goto reprocess; 


    }else{ 

     if ((preproc==1) || (preproc==2) || (preproc==3)){ 
     printf("Correct Input\n"); 

     }else{ 
     printf("Invalid Input %d \n", preproc); 
     goto reprocess; 

     } 
    } 

Почему это так, что если я ввожу строку, это не останавливается? Пожалуйста, направляйте меня.

+0

Вы явно писал, что если они вводят строку, то 'Гото Reprocess;'. Чего ты ожидал? –

+0

@AdamSinclair huh? Этот код выводит только «Invalid Input» (возможно, за ним следует номер) или «Корректный ввод». –

+0

Это всего лишь своего рода контролер ввода. – user3339866

ответ

1

попробовать это

if(scanf("%d%c", &preproc, &term)!= 2 || term!= '\n'){ 
    printf("Invalid Input\n"); 
    scanf("%[^\n]");//this will skip the input when there is a non-numeric input. 
    goto reprocess; 
}else{ 
Смежные вопросы