c проверить целое число - PullRequest
       1

c проверить целое число

1 голос
/ 18 апреля 2011

Я нахожу функцию для проверки цифры в c, isdigit проверяет только 0-9? как насчет 10-99999?

у меня есть целое число, например 22, я хочу проверить, действительно ли это?

есть идеи? спасибо ~

Ответы [ 2 ]

5 голосов
/ 18 апреля 2011

isdigit и др.Я для проверки символов.10-99999 больше не является одним символом.Если вы хотите проверить, является ли строка «8382820» числовой, у вас есть (как минимум) 3 варианта:

  • Зацикливание строки и выполнение isdigit для каждого символа (сбой, если один изих нет)
  • Используйте регулярное выражение ("^[0-9]+$" должно сработать, но не очень практично в C)
  • Используйте strtol и убедитесь, что указатель конца равен нулютерминатор.

Вот идея о том, как использовать strtol:

char* myString = "9823872";
char* endPtr = NULL;
long int myInt = strtol(myString, &endPtr, 10);

if(endPtr && *endPtr != '\0')
{
    fprintf(stderr, "Sorry, that's not a valid number\n");
    exit(1);
}

Возможно, есть и другие умные ответы, касающиеся scanf или atoi, но я просто оставлю это здесь дляТеперь.

2 голосов
/ 18 апреля 2011

Функция isdigit() проверяет один символ за раз.Если вы хотите проверить более одного символа из строки, выполните цикл по символам в строке и вызовите isdigit() для каждого из них.

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