我需要准备一系列ANSI C字符串,这些字符串包含范围为0x01
到0x1a
的字节。我制作了自定义代码页,因此这些值代表不同的字符(即0x09
代表Š)。我想以这种方式初始化数组:
static const char* brands[] = {
"Škoda",
//etc...
};
如何在0x09
中添加Š
代替"Škoda"
?
答案 0 :(得分:6)
建议不要使用"\x09koda"
,使用八进制或间隔字符串。
问题是十六进制转义序列的长度不受限制。因此,如果下一个char
是十六进制字符,则会出现问题。使用八进制,限制为3.或使用分隔的字符串。然后编译器将连接,但转义序列不会意外地运行得太远。
// problematic
"\x09Czech"
^^^^^--- The escape sequence is \x09C, but \0x09 was hoped for
// recommend octal
"\0111234"
^^^^--- The escape sequence is \011
// recommend spaced strings
"\x09" "Czech"
答案 1 :(得分:1)
非常简单
"Škoda" -> "\x09koda"
答案 2 :(得分:1)
如何在“Škoda”中放置0x09而不是Š?
"\x09koda"
答案 3 :(得分:1)
查看escape squences - 即\x09
对于十六进制转义,您希望使用\Xnnn
,仅使用\nnn
八进制和使用unicode \Unnnn