【问题标题】:Specifying the ']' character in a C/C++ scanf() scanset在 C/C++ scanf() 扫描集中指定“]”字符
【发布时间】:2015-05-13 22:47:22
【问题描述】:

我想使用 scanf 系列函数来提取由 ']' 分隔的字符串。 对于 ')' 的分隔符,可以这样做:

scanf(" %80[^)]", &buf); 

但是一般来说,如何在扫描集中包含“]”(不仅仅是上面的否定集案例示例)?是否有某种逃避序列?

"[^\\]]"

?

【问题讨论】:

    标签: c++ c format scanf


    【解决方案1】:

    诀窍是将']'作为模式中的第一个字符:

    scanf(" %80[^]]", &buf);
    

    【讨论】:

    • 但这不是一个普遍的答案——它可能在这种特殊情况下有效,但在非否定情况下,您如何在扫描集中指定该字符?
    • 哦,我刚刚找到了规范,你说得对,扫描集中的第一个字符是经过特殊处理的,即使在非否定集中它也会接受 ] 字符。定义这样的功能确实感觉有点“hacky”!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多