gpt4 book ai didi

c++ - scanf/sscanf 可以处理转义字符吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:25:48 28 4
gpt4 key购买 nike

int main()
{
char* a = " 'Fools\' day' ";
char* b[64];
sscanf(a, " '%[^']s ", b);
printf ("%s", b);
}

--> puts "Fools" in b

显然,我想在 b 过“愚人节”。我可以告诉 sscanf() 不要将转义的撇号视为字符序列的结尾吗?

谢谢!

最佳答案

没有。这些功能只是读取普通的旧字符。它们不会根据任何转义规则解释内容,因为没有什么可以转义的——引号、撇号和反斜杠在输入字符串中并不特殊。

你必须使用其他东西来解析你的字符串。您可以编写一个小状态机来一次读取字符串的一个字符,并跟踪前一个字符是否为反斜杠。 (不要只是扫描到下一个撇号,然后向后看一个字符;如果允许转义反斜杠和撇号,那么您最终可能会重新扫描到字符串的开头以查看无论您有奇数还是偶数转义字符。总是向前解析字符串,而不是向后解析字符串。)

关于c++ - scanf/sscanf 可以处理转义字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3194540/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com