如何将\
放在C中字符串的"
之前,而不是按字符解析字符串?
实际上,我们正在使用sprintf
来获取字符串,我们正在形成JSON响应。但是JSON正在给我们错误,因为它希望\
之前"
存在。
例如,如果字符串的格式为:
"hi "hello" bye"
我应该以
的格式获取它"hi \"hello\" bye"
答案 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 ..)字符串在一起你已经知道如何逃避。