Как я могу проверить, является ли строка целым числом в C? - PullRequest
2 голосов
/ 01 апреля 2020

Недавно я столкнулся с проблемой, когда у меня argv[] был введен массив строк для проверки, является ли он целым числом или нет.

Я пытался использовать isdigit(). Тем не менее, он возвращает "20x" как целое число. Я много искал, но не смог найти ничего полезного для C языка.

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 01 апреля 2020

[Требуется stdbool.h и ctype.h]

bool isWholeNumber(char* num)
{
    // Check if the input is empty
    if (*num == '\0') return false;

    // Ignore the '+' sign if it is explicitly present in the beginning of the number
    if (*num == '+') ++num;

    // Check if the input contains anything other than digits
    while (*num)
    {
        if (!isdigit(*num)) return false;
        ++num;
    }

    // You can add other tests like
       // Ignoring the leading and trailing spaces
       // Other formats of whole number (1.0, 1.00, 001, 1+0i, etc.)
       // etc. (depends on your input format)

    // The input is a whole number if it passes these tests
    return true;
}

Это должно работать и для больших целых чисел.

Надеюсь, вы получили лог c и способ подходить к этой задаче. Просто перебирайте каждый символ в строке и проверяйте их в соответствии с вашими потребностями.

0 голосов
/ 01 апреля 2020

Вы проверяете на символ в вашем массиве символов:

for(int i = 0; i < length; i++){
   ch = charArray[i];
   if('0' <= ch && ch <= '9'){
      // it's a character number (in decimal)
   }
   // you do with other conditions: formated number, .....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...