Доброго времени суток формучане.
В структуре находится поле типа char[size] в которое нужно занести данные из char*. Каким образом это можно сделать?
Спасибо за внимание.
Здравствуйте, Аноним, Вы писали:
А>Доброго времени суток формучане.
А>В структуре находится поле типа char[size] в которое нужно занести данные из char*. Каким образом это можно сделать?
А>Спасибо за внимание.
http://www.cplusplus.com/reference/clibrary/cstring/memcpy/
http://www.cplusplus.com/reference/clibrary/cstring/strncpy/
Здравствуйте, 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
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Здравствуйте, 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
в данном, это в каком?
Здравствуйте, 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 вполне подходит?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Здравствуйте, 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 вполне подходит?
я предложил варианты. что больше подходит, пусть выбирает сам.