是否有在转义模式下打印字符串的功能?

x86*_*x86 0 c linux string

也就是说,prt("a \t\n")应按"a \t\n"字面打印,

有没有可用的功能呢?

Dan*_*nga 6

我假设你想要逃避特殊的角色; 也就是说,您想要打印\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)


har*_*ald 6

Glib有一个函数g_strescape()可以做到这一点.如果添加到glib的依赖性对你来说不是问题,至少.