Как скопировать unsigned char в char (чтобы избежать несоответствия типов / неправильной длины? - PullRequest
0 голосов
/ 20 ноября 2010

указатель на значение без знака, *ptr.

Как правильно скопировать все значение в новое значение символа char buff; (malloc и т. Д.), Без зацикливания для каждого символа? Любой способ получить объем памяти, выделенный в настоящее время для значения указателя?

Ответы [ 2 ]

2 голосов
/ 20 ноября 2010

Если у вас действительно один символ:

char buff = (char)*ptr;

Если у вас есть строка, которую я предполагаю, когда вы говорите о циклическом переборе символов:

char *buff = strdup(ptr);
1 голос
/ 20 ноября 2010

Есть ли способ получить объем памяти, выделенный в данный момент для значения указателя?

Не в том смысле, в котором вы ищете, нет.

На языкеВ смысле, объем памяти, выделенный для значения указателя (в вопросе), конечно, sizeof(unsigned char *).Это (опять же, конечно) никоим образом не коррелирует с размером блока памяти, на который указывает указатель.Указатель просто не содержит такой информации.

Если вы (по какой-то причине) не можете передать информацию о размере вместе с указателем, вы должны выбрать значение unsigned char, чтобы обозначить конец блока памяти (иприсвойте это значение концу блока памяти).(Вот так работают строки в C).Единственный способ определить длину блока - это циклически перебрать значения.

Почему у вас есть указатель на беззнаковый символ, если он действительно указывает на символ?Кстати, char buff вряд ли является буфером, поскольку он содержит только одно значение char.

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