Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Приведение указателей к целым числам

Автор вопроса: some_idОтветов: 2

У меня есть число xmlChar * в моем исходном файле, и мне нужно, чтобы они были в целочисленной форме.

Как правильно их бросить?

Когда я попробовал это world->representation = malloc(sizeof(int *) * mapHeight);, он говорит

error: invalid operands to binary * (have ‘long unsigned int’ and ‘xmlChar *’)

и когда я попробовал это

world->representation = malloc(sizeof(int *) * (int) mapHeight);

я получил эту ошибку

Неопределенные символы для архитектуры x86_64: "_main", ссылка из: start в crt1.10.6.o "_commandfetcher", ссылка из: _commandFetcher в ccPv5Pvd.o ld: символы не найдены для архитектуры x86_64

Как я могу привести указатель xmlChar к int? например, xmlChar имеет значение 30, мне нужно это в форме int.

  • mapHeight указывает на строку, содержащую 30 - это не то же самое, что иметь значение 30. Вам нужно будет использовать atoi/strtol для преобразования, это не приведение Erik 15.04.2011

ccastingpointers

Ответы

Ответ 1 · рейтинг 2 · JSBձոգչ

Вы не можете просто преобразовать char в int. (Вернее, вы можете, но это не то, что вы думаете.)

Используйте strtol для преобразования строки в целое число:

char* number = "30";
int value = strtol(number, NULL, 0);

Ответ 2 · Douglas Leeder

Вы не хотите бросать указатель - вы хотите его разыменовать.

Но в этом случае вы, вероятно, хотите преобразовать строку в целое число?

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы