我通常以下列方式使用指针
char *ptr = malloc( sizeof(char) * 100 );
memset( ptr, 0, 100 ) ;
strncpy( ptr, "cat" , 100 - 1 );
但是这一次,而不是使用"cat",我想在十六进制中使用ASCII等效.
cat = 0x63,0x61,0x74,0x00
我试过了
strncpy( ptr, "0x630x61" , 100 - 1 );
但它按预期失败了.
什么是正确的语法?
我还需要放一个0x00吗?让我们忘记一下memset,现在我需要放一个0x00吗?因为在"cat"表示法中,会自动放置null.
问候
Cla*_*diu 16
\xXX是以十六进制格式插入字符的语法.所以你的是:
strncpy( ptr, "\x63\x61\x74", 100 - 1);
Run Code Online (Sandbox Code Playgroud)
您不需要输入,\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 };
Run Code Online (Sandbox Code Playgroud)
都一样