*在sscanf中,*在[]内

时间:2012-04-07 10:29:17

标签: c scanf

我正在学习sscanf并遇到如下格式字符串:

sscanf("%[^:]:%[^*=]%*[*=]%n",a,b,&c);

我理解部分%[^:]表示扫描直到遇到':'并将其分配给a。 格式字符串中的:表示匹配':'

但是

  1. 我知道%*d意味着在遇到号码之前禁止分配。但是%[^*=]*中的[]是什么意思?

  2. %*[*=],是否会在遇到=之前抑制扫描。如果是这样,它是否等同于%[^=]

1 个答案:

答案 0 :(得分:1)

方括号内的*只是一个文字*。

sscanf的此调用将匹配第二个指令中的*或=所有内容,并将结果分配给b。然后第三个指令将获取所有*或=字符,并丢弃结果。