Вывод escape-последовательности из переменной
Есть строка которая берется из файла, и в ней содержатся escape-последовательности, например: char *ptr="bla \n bla"!
Если printf("%s", ptr) то будет с новой строки все, а я хочу чтобы вывелось все точно так же как строка. Есть идея бежать по строке и если по ascii '10' то печатать то что надо, if и прочее. Есть другие способы вывести нв стандартный вывод в точности как строка на Си и C++
Например на python выглядело бы так print(repr(ptr))
Ответы (2 шт):
Автор решения: Harry
→ Ссылка
Если я правильно понимаю, вам надо что-то вроде этого?
void out(const char * s)
{
for(;*s;++s)
{
char esc = ' ';
switch(*s)
{
case 0x07: esc = 'a'; break;
case 0x08: esc = 'b'; break;
case 0x09: esc = 't'; break;
case 0x0A: esc = 'n'; break;
case 0x0B: esc = 'v'; break;
case 0x0C: esc = 'f'; break;
case 0x0D: esc = 'r'; break;
case 0x5C: esc = '\\'; break;
case 0x27: esc = '\''; break;
case 0x22: esc = '\"'; break;
}
if (esc == ' ') putchar(*s);
else { putchar('\\'); putchar(esc); }
}
}
Автор решения: Mikhailo
→ Ссылка
Как написал Harry, можно и так:
void recode(const char* s) {
for (; *s; ++s) {
char code[] = "\x07\x08\x09\x0A\x0B\x0C\x0D\x22\x27\x5C";
char* c = strchr(code, *s);
if (c) {
putchar('\\');
putchar("abtnvfr\"\'\\"[c - code]);
}
else putchar(*s);
}
}