%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