How to escape or terminate an escape sequence in C

2020-02-12 02:05发布

问题:

I have sequences of characters I'm feeding to a decoding function:

For example:

"\x05three"

(Yes, that's a Pascal-style string. The function translates length-prefixed strings to null-terminated strings.)

I wrote a few test cases, among which:

"\x04four"

And to my surprise, that came out as "Oour". Looking closer, it turns out that the specification on escape sequences for Visual Studio allows that, my sequence is basically interpreted as \x04f, which would be 79 in base 10 (thus my resulting string becomes "Oour", 79 being 'O')

My solution was simply to split the string:

"\x04" "four"

The question: Is there another way to escape or terminate an escape sequence?

回答1:

Yes, you cant try "\004four" for instance. Actually, even "\04four" will probably do, because f is not an octal number.



回答2:

You just write strings next to each other:

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


标签: c escaping