如何转义字符串中的字符并显示转义字符?

时间:2014-08-12 10:48:53

标签: c escaping

如何将\放在C中字符串的"之前,而不是按字符解析字符串?

实际上,我们正在使用sprintf来获取字符串,我们正在形成JSON响应。但是JSON正在给我们错误,因为它希望\之前"存在。

例如,如果字符串的格式为:

"hi "hello" bye"

我应该以

的格式获取它
"hi \"hello\" bye"

2 个答案:

答案 0 :(得分:0)

通过在\\之前添加\"来逃避sprintf中的反斜杠:

json_resp->offset += sprintf(&json_resp->buffer[json_resp->offset], 
               "\n\\\""JSON_FIELD_EVENT_SYNOPSIS"\\\": \\\"%s\\\",", utf8_str);

您应该考虑使用snprintf来避免缓冲区溢出。

答案 1 :(得分:0)

一点一点地看待它,而不是一气呵成地混淆整个事物。

您希望看到需要转义的\\\

接下来,您要查看",其中还需要转义:\"

所有这一切都是:

printf("hi \\\"hello\\\" bye")

它看起来比实际上更糟糕,更令人困惑如果你如上所述将其分解 - 它没有特殊的规则,它只是将( ahem ..)字符串在一起你已经知道如何逃避。