PDA

Просмотр полной версии : проблема со строками C++


fire64
16.12.2008, 17:24
суть проблемы такая

есть код следующего вида




#define MRSG "\x31\xFF\x30\x2E\x30\x2E\x30\x2E\x30\x3A\x30\x00"


int main ( int argc, char **argv )
{

char *parametr = ( argv[1] );

char connect[250];

strcat (connect, MRSG );
strcat (connect, parametr);

return 0;
}




в результате объединения строк получается следующее

\x31\xFF\x30\x2E\x30\x2E\x30\x2E\x30\x3A\x30 + parametr

тоесть байт x00 из строки исключается


вопрос, как сделать

\x31\xFF\x30\x2E\x30\x2E\x30\x2E\x30\x3A\x30\x00 + parametr

nerezus
16.12.2008, 17:27
Скопировать первую, потом ноль, потом вторую

только вот в "строках" C не может быть 0, поэтому это называется не строкой, а буффером.

fire64
16.12.2008, 17:35
ок, из MRSG убрал ноль

сделал так



char connect[250];

strcat (connect, MRSG );
strcat (connect, "\x00" );
strcat (connect, parametr);



толку нет, ноля все равно нет

bons
16.12.2008, 18:11
#define MRSG "\x31\xFF\x30\x2E\x30\x2E\x30\x2E\x30\x3A\x30\x00"
...
memcpy(connect, MRSG, sizeof(MRSG)-1);
memcpy(connect+sizeof(MRSG)-1, parametr, strlen(parametr));
...

memcpy находится в string.h