Я предполагаю, что вы хотите экранировать специальные символы; то есть вы хотите напечатать \n
вместо символа новой строки.
Не в стандартной библиотеке, насколько я знаю. Вы можете легко написать это самостоятельно; ядро функции примерно так:
static char *escape_char(char *buf, const char *s) {
switch (*s) {
case '\n': return "\\n";
case '\t': return "\\t";
case '\'': return "\\\'";
case '\"': return "\\\"";
case '\\': return "\\\\";
/* ... some more ... */
default:
buf[0] = *s;
buf[1] = '\0';
return buf;
}
}
/* Warning: no safety checks -- buf MUST be long enough */
char *escape_string(char *buf, const char *s)
{
char buf2[2];
buf[0] = '\0';
for (; *s != '\0'; s++) {
strcat(buf, escape_char(buf2, s));
}
return buf;
}
Генерация тела функции также возможна, поскольку она может быть довольно утомительной и повторяющейся.
Вот как вы можете это проверить:
int main()
{
const char *orig = "Hello,\t\"baby\"\nIt\'s me.";
char escaped[100];
puts(orig);
puts(escape_string(escaped, orig));
return 0;
}