Имя пользователя:
Пароль:
 

Показать сообщение отдельно
pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


использую описание функции по ссылке:
http://msdn.microsoft.com/en-us/libr...8VS.80%29.aspx
Цитата crashtuak:
int _tmain(int argc, _TCHAR* argv[]) { LPSTR testt=""; LPSTR testt2="qwerty"; strcpy_s(testt,strlen(testt2)+strlen(testt),testt2); return 0; } »
Код: Выделить весь код
код
strcpy_s(testt,strlen(testt2)+strlen(testt),testt2);
должен запихать в testt, под который выделен (формально) один символ, и приравнен нулю
strlen(testt2)+strlen(testt) символов из строки testt2. Случись такое в моей голове, я бы тоже выдал access violation.
И возможно красивые мультики увидел бы...
если хочешь соединить две строки, то нужно:
1. выделить буфер необходимого размера
2. следить за переполнением буфера
Код: Выделить весь код
unsigned const dest_size = 100;
// я невнимательно прочитал про размер - учитывает он конечный ноль или нет. Написал как будто учитывает.
TCHAR testt[dest_size] = "preamble+"; // хотя можно и из динамической памяти LPSTR testt = new char[dest_size];
LPSTR testt2 = "qwerty";
strcpy_s(testt + strlen(testt), min(dest_size - strlen(testt1), strlen(testt2)+1 /*для завершающего 0*/), testt2);
// если выделял динамически, то delete [] testt;

Последний раз редактировалось pva, 03-04-2010 в 19:27. Причина: ум за разум

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:15, 03-04-2010 | #6