Сегментация в c - PullRequest
       76

Сегментация в c

1 голос
/ 03 февраля 2020

Требуется подтвердить, что строка является ди git, но при этом возникает ошибка сегментации, приведенная ниже - ошибок при компиляции нет:

for (int i=0; argv[i] != '\0'; i++)
{
    if (isdigit(argv[i]) != 1)
    {
        printf("FAIL %s\n", argv[1]);
    }
    else
    {
        printf("PASS %s\n", argv[1]);
    }
}

1 Ответ

0 голосов
/ 03 февраля 2020

Кажется, вы имеете в виду следующее

int success = argv[1][0] != '\0';

for ( size_t i = 0; success && argv[1][i] != '\0'; i++ )
{
    success = isdigit( ( unsigned char )argv[1][i] ) != 0;
}

if ( !success )
{
    printf( "FAIL %s\n", argv[1] );
}
else
{
    printf( "PASS %s\n", argv[1] );
}

То есть вы хотите проверить, что первый параметр командной строки представляет число.

...