Char * Указатели против целых чисел в C - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь сравнить два символа в C, но по какой-то причине он сравнивает целое число и символ.Как я могу преобразовать символьный указатель в целое число, чтобы я мог использовать его с методом isspace ()?

Вот часть моего кода:

char *token;
token = strtok(line, " ");
int i = 0;
while (token != NULL)
{
    if(*token != ':' || isspace(token)){
        printf("%i:--%s--\n", i, token);
    }
    token = strtok(NULL, " ");
    i++;
}

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Вы уже делаете это правильно с *token != ':'.Просто используйте тот же синтаксис: isspace(*token).

0 голосов
/ 13 октября 2018

int isspace(int ch) ожидает значение в диапазоне unsigned char или EOF.Указатель не принимает указатель, используемый char *token; .... isspace(token)

Вместо ссылки на char, на которую указывает token.Поскольку char может быть как signed char или unsigned char, страхование unsigned char значения используются при передаче в is...() функции.

// isspace(token)
isspace((unsigned char) *token)

if(*token != ':' || ...){ странно, так как это проходитвсе символы не ':', включая все пробелы.Эта часть кода ОП неясна.

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