你地址流是一个整数,但你 输入了 很多整数【它们是空格分隔的】,这就是下面的输入为啥被接收的原因
char*p = NULL;
int n = 0;
scanf("Hello%2$10ms%3$n",0,&p,&n);
解析流程:
接着我们输入 HelloAAAAAAAAAAAA
Hello与格式串中开始位置的Hello相匹配,继续看后面
%2$10ms,最多读取10个字符,并且自己创建缓冲区,把字符串,也就是10个A读到自己创建的缓冲区内,并把地址写到第二个参数指定的位置。
%3 $n ,前面读取了15个字符,所以这里会把15写到第三个参数指定的位置
运行看一下:
再输入内容 Helaaaaaa看一下,匹配成功三个字符,然后第四个失败,scanf结束,最后p 任然是0,n任然为0