как расширить char buffer []

S0ME0NE
Дата: 18.02.2015 09:29:44
Всем здрасьте.
#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	char header [] = "заголовок";

	unsigned short int msg_len1;
	unsigned short int msg_len2;


	char buffer [] = "длина сообщения";
// надо добавить длину этого самого коротенького сообщения, и пробельчик перед длиной
// то есть в результате должно быть следующее:	"длина сообщения 15"

	msg_len1 = sizeof(buffer);
	msg_len2 = msg_len1 + 1 + sizeof(msg_len1);

   	char buffer2 = new char [msg_len2];	// "длина сообщения 15"

	for (int j = 0; j < msg_len1; j++) {
		buffer2[j] = buffer[j];
	}

	// ВОТ ТУТ ПОДСКАЖИТЕ КАК ДОБАВИТЬ К сообщению ПРОБЕЛ И ЦИФРЫ (т.е. длину сообщения)
	...

    MessageBox(NULL, buffer2, header, MB_OK);
    return 0;
 }
egorych
Дата: 18.02.2015 09:42:52
S0ME0NE,
RTFM strcpy(), strcat()
S0ME0NE
Дата: 18.02.2015 10:11:19
Спасибо, понятно, но мне бы хотелось (для общего развития), как добавить не используя sprintf
S0ME0NE
Дата: 18.02.2015 10:27:18
меня интересует именно эта строка
   	char buffer2 = new char [msg_len2];	// "длина сообщения 15"
потому что я не знаю какой будет длина buffer2 в результате
Dima T
Дата: 18.02.2015 10:44:22
S0ME0NE
я не знаю какой будет длина buffer2 в результате

Длина будет msg_len2
S0ME0NE
	msg_len2 = msg_len1 + 1 + sizeof(msg_len1);

sizeof(msg_len1) вернет сколько байт памяти занимает переменная msg_len1 (скорее всего 4). Если я правильно понимаю - тебе надо количество десятичных знаков значения msg_len1.
m_Sla
Дата: 18.02.2015 10:50:58
Число 15 переводишь в строку. Длину строки узнаешь с помощью strlen().
msg_len2 = msg_len1 + 1 + strlen( "строка числа 15" );
S0ME0NE
Дата: 18.02.2015 10:52:41
Dima T
Длина будет msg_len2

спасибо что отозвались

я имел введу что
char buffer2 = new char [msg_len2];
эта строка кода не компилируется
то есть надо знать заранее (до компиляции) длину буфера

можно ли как-то без вектора и без sprintf сделать это? ведь вектор как-то сделали!
m_Sla
Дата: 18.02.2015 10:53:56
S0ME0NE
Dima T
Длина будет msg_len2

спасибо что отозвались

я имел введу что
char buffer2 = new char [msg_len2];
эта строка кода не компилируется
то есть надо знать заранее (до компиляции) длину буфера

можно ли как-то без вектора и без sprintf сделать это? ведь вектор как-то сделали!
char *buffer2 = new char [msg_len2];
Dima T
Дата: 18.02.2015 10:57:15
S0ME0NE
эта строка кода не компилируется
то есть надо знать заранее (до компиляции) длину буфера

Прямо так и написано в сообщении об ошибке? Может вместо фантазирования попытаться понять на что ругается компилятор?

В данном случае buffer2 это указатель:
char *buffer2 = new char [msg_len2]