我假设你想要逃避特殊的角色; 也就是说,您想要打印\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;
}
Run Code Online (Sandbox Code Playgroud)
生成函数体也是一种选择,因为它可能变得相当繁琐和重复.
这是你如何测试它:
int main()
{
const char *orig = "Hello,\t\"baby\"\nIt\'s me.";
char escaped[100];
puts(orig);
puts(escape_string(escaped, orig));
return 0;
}
Run Code Online (Sandbox Code Playgroud)