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

Specifying the ']' character in a C/C++ scanf() scanset

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

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

但是一般情况下如何在扫描集中包含“]”(不仅仅是上面的否定集案例示例)?是否有某种转义序列?

"[^\]]"

?

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

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