Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Проблема с memcpy функцией


Автор: Ak47black 22.2.2010, 22:52
Здравствуйте.
Подскажите пожалуйста, как тут правильно сделать
Есть
Код

char buffer[20];
argv[4] - аргумент командной строки

нужно скопировать в память адрес который начинается с buffer[2] из argv[4], при этом значение сколько байт нужно скопировать находится по buffer[1].
Вот так попробовал
Код

memcpy((void*)buffer[2], argv[4], (unsigned int)buffer[1]);

получаю EAccessViolation

Автор: Alexeis 22.2.2010, 23:24
Ak47black, адрес не может храниться в одном байте. Что-то напутал.

Автор: mes 22.2.2010, 23:31
Цитата(Alexeis @  22.2.2010,  22:24 Найти цитируемый пост)
адрес не может храниться в одном байте. 


Цитата(Ak47black @  22.2.2010,  21:52 Найти цитируемый пост)
в память адрес который начинается с buffer[2] 


Автор: Alexeis 22.2.2010, 23:44
mes, мож я чего не понимаю, но (void*)buffer[2] это же байт приведенный к указателю.

Автор: mes 23.2.2010, 00:17
Цитата(Alexeis @  22.2.2010,  22:44 Найти цитируемый пост)
но (void*)buffer[2] это же байт приведенный к указателю. 

угу, в примере выражено, не то что спрашивается.. думаю требуется
Код

*(void**)&test[2]

но мое уточнение относилось не к примеру smile
хотя я согласен что задание не полное, потому как не указано кол-во отведенных байт (размер), а без этого дать правильный ответ проблематично.



Автор: GoldFinch 23.2.2010, 00:35
memcpy(buffer+2, argv[4], (unsigned int)buffer[1]);

Автор: Ak47black 23.2.2010, 00:53
Код

memcpy(buffer+2, argv[4], (unsigned int)buffer[1]); 

Работает!  smile 
Эххх.. надо по проще смотреть на вещи оказывается.
Спасибо Вам за помощь.

Добавлено @ 01:05
Цитата

Ak47black, адрес не может храниться в одном байте. Что-то напутал. 

smile 

Автор: bsa 24.2.2010, 12:56
Ak47black, если не секрет, зачем пытаешься создать паскалевский string? Может лучше использовать std::string, он более универсален и способен хранить строки значительно превышающие 255 символов.
 

Автор: Ak47black 24.2.2010, 16:52
Цитата

Ak47black, если не секрет, зачем пытаешься создать паскалевский string? 

Моя старая привычка, которая появилась от Delphi  smile 

Автор: bsa 24.2.2010, 16:54
Цитата(Ak47black @  24.2.2010,  16:52 Найти цитируемый пост)
Моя старая привычка, которая появилась от Delphi
Избавляйся от нее как можно скорее.

Автор: Ak47black 24.2.2010, 18:33
bsa,  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)