How to assign a value to a char* using hex notation?

后端 未结 3 1623
轻奢々
轻奢々 2021-02-02 01:47

I usually use pointers in the following manner

    char *ptr = malloc( sizeof(char) * 100 );
    memset( ptr, 0, 100 ) ;
    strncpy( ptr, \"cat\" , 100 - 1 );
相关标签:
3条回答
  • 2021-02-02 02:10

    Note, you only need \ inside the " " string

    char cat[4];
    cat[0] = 0x63;
    cat[1] = 0x61;
    cat[2] = 0x74;
    car[3] = 0x00;
    
    char cat[] = "\x63\x61\x74"; // note the \0 is added for you
    
    char cat[] = { 0x63, 0x61, 0x74, 0x00 };
    

    Are all the same

    0 讨论(0)
  • 2021-02-02 02:13

    \xXX is the syntax for inserting characters in hex format. so yours would be:

    strncpy( ptr, "\x63\x61\x74", 100 - 1);
    

    You don't need to put in a \x00 since having quotes automatically null-delimits the string.

    0 讨论(0)
  • 2021-02-02 02:27
    strncpy( ptr, "\x63\x61" , 100 - 1 );
    

    0x63 is an integer hexadecimal literal; The C compiler parses it as such within code. But within a string it is interpreted as a sequence of characters 0,x,6,3. The literal for the char with value 63 hex. is '\x63', and within strings you must use this notation. "c\x63" is the literal for a zero-terminated string, irrespective of the characters within the quotes (or of the notation by which you denote them), so no, you don't need to append a trailing zero manually.

    0 讨论(0)
提交回复
热议问题