c 函數不定參數(不限參數)使用實例 不定參數輸出函數

 va_start:根據參數入棧的特點,從最近第一個可變參數的固定參數開始,依次獲取每個可變參數的地址。

 頭文件:#include <stdarg.h>

 

/**
函數名: vprintf
功  能: 送格式化輸出到stdout中
用  法: int vprintf(char *format, va_list param);
程序例:
**/
#include <stdio.h>
#include <stdarg.h>

int vpf(char *fmt, ...)
{
   va_list argptr;
   int cnt;

   va_start(argptr, fmt);
   cnt = vprintf(fmt, argptr);
   va_end(argptr);

   return(cnt);
}

int main(void)
{
   int inumber = 30;
   float fnumber = 90.0;
   char *string = "abc";

   vpf("%d %f %s/n",inumber,fnumber,string);
   system("pause");
   return 0;
}

 

/**

函數名: vfprintf
功  能: 送格式化輸出到一流中
用  法: int vfprintf(FILE *stream, char *format, va_list param);
程序例:

**/

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>

FILE *fp;

int vfpf(char *fmt, ...)
{
   va_list argptr;
   int cnt;

   va_start(argptr, fmt);
   cnt = vfprintf(fp, fmt, argptr);
   va_end(argptr);

   return(cnt);
}

int main(void)
{
   int inumber = 30;
   float fnumber = 90.0;
   char string[4] = "abc";

   fp = tmpfile();
   if (fp == NULL)
   {
      perror("tmpfile() call");
      exit(1);
   }

   vfpf("%d %f %s", inumber, fnumber, string);
   rewind(fp);
   fscanf(fp,"%d %f %s", &inumber, &fnumber, string);
   printf("%d %f %s/n", inumber, fnumber, string);
   fclose(fp);

   return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章