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

Nib*_*aba 1 c c++ format scanf

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

scanf(" %80[^)]", &buf); 
Run Code Online (Sandbox Code Playgroud)

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

"[^\\]]"
Run Code Online (Sandbox Code Playgroud)

chq*_*lie 5

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

scanf(" %80[^]]", &buf);
Run Code Online (Sandbox Code Playgroud)