предупреждение: сравнение между указателем и целым числом [включено по умолчанию] в c - PullRequest
4 голосов
/ 08 декабря 2011

Я хочу проверить, содержит ли пользовательский ввод только цифры или нет.Итак, я использую следующий код:

for(i = 0; argv[1][i] != NULL; i++)
    if(!isdigit(argv[1][i]))
    {
        printf("Error");
        return -1;
    }

Он работает хорошо, но я получил это предупреждение:

warning: comparison between pointer and integer [enabled by default]

, поскольку argv[1][i] является целым числом, а NULL - указателемКак я могу избежать такого предупреждения?

Ответы [ 3 ]

14 голосов
/ 08 декабря 2011

NULL не совпадает с символом нулевого терминатора. Вы должны использовать '\0' вместо.

3 голосов
/ 08 декабря 2011

argv [1] [i] - это символ, просто сравните его с '\ 0' или 0, это более понятно.

1 голос
/ 08 декабря 2011

Для сравнения символов это можно использовать (или просто 0 в этом отношении);

for(i = 0; argv[1][i] != '\0'; i++)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...