Подтвердить что ты не робот

Как избежать или прекратить escape-последовательность в C

У меня есть последовательности символов, которые я подаю в функцию декодирования:

Например:

"\x05three"

(Да, это строка в стиле Паскаля. Эта функция преобразует строки с префиксом длины в строки с нулевым завершением.)

Я написал несколько тестовых примеров, среди которых:

"\x04four"

И к моему удивлению, это получилось как "Oour". Оглядываясь ближе, выясняется, что спецификация escape-последовательностей для Visual Studio позволяет, что моя последовательность в основном интерпретируется как \x04f, которая будет 79 в базе 10 ( таким образом, моя итоговая строка становится "Oour", 79 - "O" )

Моим решением было просто разбить строку:

"\x04" "four"

Вопрос: есть ли другой способ избежать или прекратить escape-последовательность?

4b9b3361

Ответ 1

Да, вы не можете попробовать "\004four", например. На самом деле, возможно, даже "\04four", потому что f не является восьмеричным числом.

Ответ 2

Вы просто пишете строки рядом друг с другом:

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