既然有printf函數可變參實現,那就一定有scanf函數的可變參實現。廢話不多說,源碼奉上:
本源碼不過多分析,如要明白原理,請翻本博客以往的文章看說明。
#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函數來輸入