既然有printf函数可变参实现,那就一定有scanf函数的可变参实现。废话不多说,源码奉上:

本源码不过多分析,如要明白原理,请翻本博客以往的文章看说明。

欢迎关注新浪微博:http://weibo.com/u/1896293701/home?topnav=1&wvr=6

#include

#include

int myscanf(const char *fmt , ...) ;

int main(void)

{

int num ;

printf("pls input num:\n");

myscanf("%d",&num);

printf("num:%d\n",num);

return 0 ;

}

//以下的实现方法我就不多做解释了,以往的博客写得很详细,翻翻就可以看懂,不难。

int myscanf(const char *fmt , ...)

{

va_list ap ;

int ret ;

va_start(ap , fmt);

ret = vscanf(fmt,ap); //这里调用了C库的vscanf函数,以后找到它再把它弄出来,分析方法和vprintf雷同。

va_end(ap);

return ret ;

}运行结果:

输入100,输出100,用myscanf函数来输入

cbc05bacb52149c4ac9006c4c91f5fa6.jpg

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐