Проверьте ввод в Visual C ++, используя команды C - PullRequest
0 голосов
/ 23 октября 2010

Я хочу использовать следующий код только для проверки ввода.

#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();


  }

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

Ответы [ 2 ]

0 голосов
/ 23 октября 2010

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

0 голосов
/ 23 октября 2010

Ваша проблема в использовании 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();


}

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

Вы должны проверить возврат scanf, а не использовать 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();
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...