Как я могу получить только один di git в качестве аргумента основной функции? - PullRequest
0 голосов
/ 06 апреля 2020

У меня проблема с isdi git (). Для выполнения упражнения мне нужно передать только числовое значение основной функции. Это означает, что я не могу передать ни «3 4 5», ни «привет». Мой код правильно работает с этими примерами, но он не работает со значением «2x», хотя он работает со значением «x2».

Это код:

#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <ctype.h>


int main (int argc, string argv[])
{
    if ((argc == 2) && isdigit(*argv[1]))
    {
        printf("%s \n", argv[1]);
        printf("%i \n", argc);
    }
    else
    {
        printf("You have to use only one numeric value \n");
    }
}  

Я пытался изменить if ((argc == 2) && isdigit(*argv[1])) на if ((argc == 2) && isdigit(argv[1])), но продолжаю получать Segmentation fault.

Не могли бы вы мне помочь? Большое спасибо!

1 Ответ

1 голос
/ 06 апреля 2020

isdigit(int character) проверяет только одно значение. Вы можете видеть это, потому что вы должны передать *argv[1] как первый символ второго элемента в argv. Первый символ 2x - это 2, поэтому ваша программа ведет себя так, как и ожидалось.

Что вы можете сделать, это получить длину ввода с помощью strlen(argv[1]), а затем с помощью al oop проверить, все ли символы в строке являются цифрами. Однако это работает только для десятичных целых чисел.

...