下面sscanf用法中"%*[^⼀]⼀%[^@]",求解释,尤其是第二个⼀,怎么也想不明白呢?

int main(){ char * buf[100] = {0,}; sscanf("iios/12DDWDFF@122", "%*[^/]/%[^@]", buf);//[]之外的/什么意思? printf("%s",buf);}
2026年09月25日 08:18
有3个网友回答
网友(1):

这个结果应该是获取/到@之间的字符吧
第一个^/表示非/的字符 而*是忽略符 就是忽略在/之前的非/字符对吧 但是到了/以后 这个斜杠自身还没有被忽略掉 所以还要再忽略掉/自身 于是便将/加在了后面
这个语句其实分成%*[^/]/和%[^@]两个部分 这样应该明白了吧?
或者说括号外的/就是代表字符串中的/ 用来顶替它的位置的。

网友(2):

改为sscanf(p, "%*[^//]%[^@]", buf); 则输出/12DDWDFF
改为sscanf(p, "%*[^/]%[^@]", buf); 则输出/12DDWDFF
只有sscanf(p, "%*[^/]/%[^@]", buf); 输出12DDWDFF

网友(3):

跳过这个分界的/