Преобразование из char* в char[]
От: Аноним  
Дата: 27.11.11 18:28
Оценка: :)
Доброго времени суток формучане.
В структуре находится поле типа char[size] в которое нужно занести данные из char*. Каким образом это можно сделать?
Спасибо за внимание.
Re: Преобразование из char* в char[]
От: night beast СССР  
Дата: 27.11.11 18:37
Оценка: 1 (1)
Здравствуйте, Аноним, Вы писали:

А>Доброго времени суток формучане.

А>В структуре находится поле типа char[size] в которое нужно занести данные из char*. Каким образом это можно сделать?
А>Спасибо за внимание.

http://www.cplusplus.com/reference/clibrary/cstring/memcpy/
http://www.cplusplus.com/reference/clibrary/cstring/strncpy/
Re[2]: Преобразование из char* в char[]
От: Ops Россия  
Дата: 27.11.11 20:05
Оценка:
Здравствуйте, night beast, Вы писали:

NB>Здравствуйте, Аноним, Вы писали:


А>>Доброго времени суток формучане.

А>>В структуре находится поле типа char[size] в которое нужно занести данные из char*. Каким образом это можно сделать?
А>>Спасибо за внимание.

NB>http://www.cplusplus.com/reference/clibrary/cstring/memcpy/

NB>http://www.cplusplus.com/reference/clibrary/cstring/strncpy/

memcpy вряд ли, в данном случае это UB
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[3]: Преобразование из char* в char[]
От: night beast СССР  
Дата: 28.11.11 03:15
Оценка:
Здравствуйте, Ops, Вы писали:

А>>>Доброго времени суток формучане.

А>>>В структуре находится поле типа char[size] в которое нужно занести данные из char*. Каким образом это можно сделать?
А>>>Спасибо за внимание.

NB>>http://www.cplusplus.com/reference/clibrary/cstring/memcpy/

NB>>http://www.cplusplus.com/reference/clibrary/cstring/strncpy/

Ops>memcpy вряд ли, в данном случае это UB


в данном, это в каком?
Re[4]: Преобразование из char* в char[]
От: Ops Россия  
Дата: 28.11.11 07:48
Оценка:
Здравствуйте, night beast, Вы писали:

NB>Здравствуйте, Ops, Вы писали:


А>>>>Доброго времени суток формучане.

А>>>>В структуре находится поле типа char[size] в которое нужно занести данные из char*. Каким образом это можно сделать?
А>>>>Спасибо за внимание.

NB>>>http://www.cplusplus.com/reference/clibrary/cstring/memcpy/

NB>>>http://www.cplusplus.com/reference/clibrary/cstring/strncpy/

Ops>>memcpy вряд ли, в данном случае это UB


NB>в данном, это в каком?


const size_t size=4096;
char a[size];
char *b = new char[3];
memcpy(a,b,size);

в данном — это когда неизвестно, на что указывает b.
при таком копировании может быть AV, а может и не быть, все зависит от того, где выделится память для b. скорее всего не будет, но мало ли.
еще прикольнее, тут с очень большой вероятностью выстрелит:
char *b = (char*)alloca(3*sizeof(char));

да и зачем это все, когда strncpy вполне подходит?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[5]: Преобразование из char* в char[]
От: night beast СССР  
Дата: 28.11.11 08:15
Оценка:
Здравствуйте, Ops, Вы писали:

А>>>>>Доброго времени суток формучане.

А>>>>>В структуре находится поле типа char[size] в которое нужно занести данные из char*. Каким образом это можно сделать?
А>>>>>Спасибо за внимание.

NB>>>>http://www.cplusplus.com/reference/clibrary/cstring/memcpy/

NB>>>>http://www.cplusplus.com/reference/clibrary/cstring/strncpy/

Ops>>>memcpy вряд ли, в данном случае это UB


NB>>в данном, это в каком?


Ops>
Ops>const size_t size=4096;
Ops>char a[size];
Ops>char *b = new char[3];
Ops>memcpy(a,b,size);
Ops>

Ops>в данном — это когда неизвестно, на что указывает b.

топикстартер ты? я, допустим, не видел, чтобы говорилось что char указывает именно на строку.
на крайний случай, можно написать memcpy(a,b,min(size,strlen(b)));

Ops>при таком копировании может быть AV, а может и не быть, все зависит от того, где выделится память для b. скорее всего не будет, но мало ли.

Ops>еще прикольнее, тут с очень большой вероятностью выстрелит:
Ops>
Ops>char *b = (char*)alloca(3*sizeof(char));
Ops>

Ops>да и зачем это все, когда strncpy вполне подходит?

я предложил варианты. что больше подходит, пусть выбирает сам.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.