C++ 指定';]';C/C+中的字符+;scanf()扫描集

C++ 指定';]';C/C+中的字符+;scanf()扫描集,c++,c,format,scanf,C++,C,Format,Scanf,我想使用scanf家族函数来提取由']'分隔的字符串。 对于“')分隔符,可以执行以下操作: scanf(" %80[^)]", &buf); 但是通常如何在扫描集中包含“]”(而不仅仅是上面的否定集示例)?有什么可以逃避的方法吗 "[^\\]]" ?诀窍是将']'作为模式中的第一个字符: scanf(" %80[^]]", &buf); 诀窍是将']'作为模式中的第一个字符: scanf(" %80[^]]", &buf); 但这不是一个一般的答案——它可能在

我想使用scanf家族函数来提取由']'分隔的字符串。 对于“')分隔符,可以执行以下操作:

scanf(" %80[^)]", &buf); 
但是通常如何在扫描集中包含“]”(而不仅仅是上面的否定集示例)?有什么可以逃避的方法吗

"[^\\]]"

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

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

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

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

但这不是一个一般的答案——它可能在这种特殊情况下有效,但在非否定的情况下,如何在扫描集中指定该字符?哦,我刚刚找到了该字符的规范,您是对的,扫描集中的第一个字符是专门处理的,即使在非否定的情况下,它也会接受]字符。定义这样一个特性当然感觉有点“黑客”!!但这不是一个一般的答案——它可能在这种特殊情况下有效,但在非否定的情况下,如何在扫描集中指定该字符?哦,我刚刚找到了该字符的规范,您是对的,扫描集中的第一个字符是专门处理的,即使在非否定的情况下,它也会接受]字符。定义这样一个特性当然感觉有点“黑客”!!