проблема со строками C++

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by fire64, 16 Dec 2008.

  1. fire64

    fire64 Elder - Старейшина

    Joined:
    1 Apr 2008
    Messages:
    251
    Likes Received:
    22
    Reputations:
    5
    суть проблемы такая

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


    PHP:

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


    int main int argcchar **argv )
    {

        
    char *parametr = ( argv[1] );

        
    char connect[250];

        
    strcat (connectMRSG );
        
    strcat (connectparametr);

             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
     
  2. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    Скопировать первую, потом ноль, потом вторую

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

    fire64 Elder - Старейшина

    Joined:
    1 Apr 2008
    Messages:
    251
    Likes Received:
    22
    Reputations:
    5
    ок, из MRSG убрал ноль

    сделал так

    PHP:

    char connect
    [250];

    strcat (connectMRSG );
    strcat (connect"\x00" );
    strcat (connectparametr);

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

    bons Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    286
    Likes Received:
    121
    Reputations:
    21
    Code:
    #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
     
    #4 bons, 16 Dec 2008
    Last edited: 16 Dec 2008
    1 person likes this.