如何在C中转义或终止转义序列

时间:2011-11-22 15:44:06

标签: c escaping

我有一系列字符,我正在为解码功能提供信息:

例如:

"\x05three"

(是的,那是一个Pascal风格的字符串。该函数将长度为前缀的字符串转换为以null结尾的字符串。)

我写了一些测试用例,其中包括:

"\x04four"

令我惊讶的是,那是“Oour”。仔细观察,事实证明Visual Studio的escape sequences规范允许这样,我的序列基本上被解释为\x04f,在基数10中为79(因此我的结果字符串变为“Oour”, 79是'O')

我的解决方案只是拆分字符串:

"\x04" "four"

问题:是否有其他方法可以逃脱或终止转义序列?

2 个答案:

答案 0 :(得分:5)

是的,你不能试试"\004four"。实际上,即使"\04four"也可能会这样做,因为f不是八进制数。

答案 1 :(得分:0)

您只需彼此相邻地写字符串:

char a[3] = "1\02"   // {'1', '\2', '\0'}  
char a[4] = "1\0""2" // {'1', '\0',  '2', '\0'}

sizeof("1\02") // 3
sizeof("1\0""2") // 4