%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
分享和享受。
檢查此問題http://stackoverflow.com/questions/3401156/what-is-the-use-of-n-format-specifier-in-c#answer-3401176 – arthankamal
有人應該發佈標準或規範或手冊或者解釋這樣的事情的書。在地球上任何地方都找不到任何人。 –
@EricPostpischil我希望你是諷刺。 – Sebivor