如何使用hex表示法为char *赋值?

我通常以下列方式使用指针

     char * ptr = malloc(sizeof(char)* 100);
     memset(ptr,0,100);
     strncpy(ptr,“cat”,100  -  1);

但是这一次,而不是使用“cat”,我想在hex中使用ASCII等效。

cat = 0x63,0x61,0x74,0x00

我试过了

     strncpy(ptr,“0x630x61”,100  -  1);

但它按预期失败了。

什么是正确的语法?

我还需要放一个0x00吗? 暂时让我们忘记memset ,现在我需要放一个0x00吗? 因为在“cat”表示法中,会自动放置null。

问候

\xXX是以hex格式插入字符的语法。 所以你的是:

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

您不需要输入\x00因为引号自动为null分隔字符串。

注意,你只需要在“”字符串里面\

 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 }; 

都一样

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

0x63是整数hex文字; C编译器在代码中解析它。 但在字符串中,它被解释为字符序列0,x,6,3 。 值为63 hex的char的文字。 是'\x63' ,在字符串中你必须使用这种表示法。 "c\x63"零终止字符串的字面值,不管引号中的字符(或表示它们的符号),所以不,您不需要手动附加尾随零。