2009年1月27日 星期二

sscanf %n?

某段code看到的

int d,n;
sscanf("6:abc", "%i:%n", &d, &n);

%n?而且看起來match不到東西
原來%n不是要match用的,它可以傳回已經被sscanf比對完的字元個數
所以上例的n值會等於2

很奇怪不是嗎?
明明是在format string裡,卻不是代表要match的字串,而是已比對的字元數=_=
把這當成sscanf的return value不是比較容易了解嗎?