2

私はsscanf以下のようなフォーマット文字列について学び、出くわしました。

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

%[^:]この部分は、が検出されるまでスキャン':'して、に割り当てることを意味することを理解しましたa:フォーマット文字列では、の一致を意味します':'

だが

  1. %*d数字に出会うまで割り当てを抑制するという意味だと理解しました。しかし、それでは%[^*=]*内部は[]どういう意味ですか?

  2. %*[*=]、に遭遇するまでスキャンを抑制するようなものですか=。もしそうなら、それは同等%[^=]ですか?

4

1 に答える 1

1

内側の*角括弧は単なるリテラル * です。

この への呼び出しsscanfは、2 番目のディレクティブの * または = までのすべてに一致し、結果を に割り当てbます。次に、3 番目のディレクティブはすべての * または = 文字を取得し、結果を破棄します。

于 2012-04-07T10:45:43.690 に答える