c语言:谁帮我解释一下下面的程序

c语言:谁帮我解释一下下面的程序
#include
int main()
{
int n=0,t;
while(scanf("%*[^0-9]%d",&t)!=EOF)
printf("%d:%d\n",++n,t);
return 0;
}
%*[^0-9]%d这是scanf中使用正则表达式的用法,*表示将跳过后面表达式(即[^0-9])所匹配的项,而樱猜[^0-9]表示非0-9之间的表达式,即输入直到出现数字0-9,数字之前的表达式都被过滤掉。
后面没颂毕的%d就是读取一个整型啦。
所以如果输入a111b222ccc333
那么首先a匹枯芹配%*[^0-9],将被忽略掉,然后读取111到t,然后再忽略b,再读取222,以此类推。
哪里尘纤不懂?
如果scanf没有接收到输入,那亩茄么会返回一个EOF,所以这个while循环可以让迅兄察用户一直输入到不想输入了为止。
← 上一篇: 下一篇: →