2010-10-23 1 views
0

Я хочу использовать следующий код, чтобы проверить ввод.Проверка ввода в Visual C++ с использованием команд C

#include <stdio.h> 
#include <iostream> 
#include <ctype.h> 

int main() 
    { 
    int number1; 

    puts("Enter number 1 please:"); 
    scanf_s("%d",&number1); 

    if (isdigit(number1)) 
    { 
     puts("Input is correct."); 

    } 
    else 
    { 
     puts("Your input is not correct. Enter a number please."); 
    } 

     std::cin.get(); 
     std::cin.get(); 


    } 

К сожалению, это не работает. Я печатаю цифру, и мой ответ «Ваш вход не ...». Любые предложения, в которых проблема?

+0

Почему бы не использовать cin и cout? – Puppy

ответ

0

Ваша проблема заключается в использовании isdigit. Сравните этот код:

int main() 
{ 
int number1; 

puts("Enter number 1 please:"); 
scanf_s("%d",&number1); 
printf("You entered %d\n", number1); 
if (isdigit(number1)) 
{ 
    puts("Input is correct."); 

} 
else 
{ 
    puts("Your input is not correct. Enter a number please."); 
} 

    std::cin.get(); 
    std::cin.get(); 


} 

При вводе действительного номера это отражается на успешной печати этого номера.

Вы должны проверить возвращение зсапЕ, а не использовать isdigit, такие как этот пример кода:

int main() 
{ 
int number1; 

puts("Enter number 1 please:"); 
if (scanf_s("%d",&number1))   
    puts("Input is correct."); 
else 
    puts("Your input is not correct. Enter a number please."); 

std::cin.get(); 
std::cin.get(); 
} 

Я считаю, что для более чем одного поля, вам нужно будет более тщательно проверять возвращаемое значение зсапЕ чем просто ноль или один.

+0

Спасибо. Ваше решение определенно умнее моего. – Ordo

0

isdigit принимает номер1 типа char и не int. Замена number1 на тип char решит проблему и сообщит правильные результаты.

+0

Извините, но это не сработает. Я изменил int number1 на char number1, но у меня все еще такая же проблема. – Ordo

+0

Вам также необходимо изменить% d и сделать его% c – rpoplai

Смежные вопросы