%n
すでに処理された入力文字列の文字数を関連パラメータに格納します。この場合read
、この値を取得します。コードの実行時に各変数に何が起こるかをダンプするために、コードを少し書き直しました。
#include <stdio.h>
int main(int argc, char **argv)
{
char *s = "12 34 567";
int read=-1, cur = 0, x = -1, call=1;
printf("Before first call, s='%s' cur=%d x=%d read=%d\n", s, cur, x, read);
while(sscanf(s+cur, "%d%n", &x, &read) == 1)
{
cur += read;
printf("After call %d, s='%s' cur=%d x=%d read=%d\n", call, s, cur, x, read);
call += 1;
}
}
以下を生成します
Before first call, s='12 34 567' cur=0 x=-1 read=-1
After call 1, s='12 34 567' cur=2 x=12 read=2
After call 2, s='12 34 567' cur=5 x=34 read=3
After call 3, s='12 34 567' cur=9 x=567 read=4
共有してお楽しみください。