stdarg.h

@函数名称:     vfprintf
函数原型:     int vfprintf(FILE *fp,const char *format, va_list arglist)
函数功能:     fprintf函数,参数表由一个va_list类型的指针代替
函数返回:
参数说明:     fp=文件指针,format=参数格式说明,具体参见printf函数,arglist=参数列表指针
所属文件:     <stdio.h><stdarg.h>

#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()
{
    int inumber=30;
    float fnumber=90.0;
    char string[4]="abc";
    fp=tmpfile();
    if (!fp)
    {
        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",inumber,fnumber,string);
    fclose(fp);
    return 0;
}


@函数名称:     vprintf
函数原型:     int vprintf(const char *format, va_list arglist)
函数功能:     printf函数,参数表由一个va_list类型的指针代替
函数返回:
参数说明:     format=参数格式说明,具体参见printf函数,arglist=参数列表指针
所属文件:     <stdio.h><stdarg.h>

#include <stdio.h>
#include <stdarg.h>
int vpf(char *fmt, ...)
{
    va_list argptr;
    int cnt;
    va_start(argptr,format);
    cnt=vprintf(fmt,argptr);
    va_end(argptr);
    return(cnt);
}
    int main()
{
    int inumber=30;
    float fnumber=90.0;
    char *string="abc";
    vpf("%d %f %s",inumber,fnumber,string);
    return 0;
}


@函数名称:     vsprintf
函数原型:     int vsprintf(char *buf,const char *format, va_list arglist)
函数功能:     sprintf函数,参数表由一个va_list类型的指针代替
函数返回:
参数说明:     format=参数格式说明,具体参见printf函数,arglis=参数列表指针
所属文件:     <stdio.h>,<stdarg.h>

#include <stdio.h>
#include <conio.h>
#include <stdarg.h>
char buffer[80];
int vspf(char *fmt, ...)
{
    va_list argptr;
    int cnt;
    va_start(argptr, fmt);
    cnt=vsprintf(buffer,fmt,argptr);
    va_end(argptr);
    return(cnt);
}
int main()
{
    int inumber=30;
    float fnumber=90.0;
    char string[4]="abc";
    vspf("%d %f %s",inumber,fnumber,string);
    printf("%s",buffer);
    return 0;
}

@函数名称:     vscanf
函数原型:     int vscanf(char *format, va_list param)
函数功能:     stdin中执行格式化输入
函数返回:
参数说明:
所属文件:     <stdio.h>,<stdarg.h>

#include <stdio.h>
#include <conio.h>
fprintf作用#include <stdarg.h>
int vscnf(char *fmt, ...)
{
    va_list argptr;
    int cnt;
    printf("Enter an integer, a float, and a string (e.g. i,f,s,)");
    va_start(argptr,fmt);
    cnt=vscanf(fmt,argptr);
    va_end(argptr);
    return(cnt);
}
int main()
{
    int inumber;
    float fnumber;
    char string[80];
    vscnf("%d, %f, %s",&inumber,&fnumber,string);
    printf("%d %f %s",inumber,fnumber,string);
    return 0;
}
   
@函数名称:     va_start
函数原型:     void va_start(va_list argptr,Npara)
函数功能:     开始使用可变参数,该函数和va_endva_arg配合使用
函数返回:
参数说明:     argptr=void类型指针,类型va_list是一个void类型的指针,Npara=可变参数的个数
所属文件:     <stdarg.h>

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

#define ESCAPE 27

void tprintf(int row,int col,char *fmt, ...)
{
    auto va_list ap;
    char *p1, *p2;

    va_start(ap,fmt);
    p1=va_arg(ap,char*);
    p2=va_arg(ap,char*);
    printf("%c[%2.2d;%2.2dH",ESCAPE,row,col);
    printf(fmt,p1,p2);
    va_end(ap);
}

int main()
{
    struct tm time_of_day;
    time_t ltime;
    auto char buf[26];

    time(<ime);
    _localtime(<ime,&time_of_day);
    tprintf(12,1,"Date and time is:%s\n",_asctime(&time_of_day,buf));
    return 0;
}


@函数名称:     va_end
函数原型:     void va_end(va_list argptr)
函数功能:     停止使用可变参数,该函数和va_start,va_arg配合使用
函数返回:     
参数说明:     argptr=void类型指针,类型va_list是一个void类型的指针
所属文件:     <stdarg.h>
暂时没有
#include <stdio.h>
#include <stdarg.h>
#include <time.h>

#define ESCAPE 27

void tprintf(int row,int col,char *fmt, ...)
{
    auto va_list ap;
    char *p1,*p2;

    va_start(ap,fmt);
    p1=va_arg(ap,char*);
    p2=va_arg(ap,char*);
    printf("%c[%2.2d;%2.2dH",ESCAPE,row,col);
    printf(fmt,p1,p2);
    va_end(ap);
}
int main()
{
    struct tm time_of_day;
    time_t ltime;
    auto char buf[26];

    time(<ime);
    _localtime(<ime,&time_of_day);
    tprintf(12,1,"Date and time is:%s\n",_asctime(&time_of_day,buf));
    return 0;
  }

@函数名称:     va_arg
函数原型:     tpye va_arg(va_list argptr, type)
函数功能:     调用可变参数列表,该函数和va_startva_end配合使用
函数返回:
参数说明:     argprt=void类型指针,指向可变参数,类型va_list是一个void类型的指针,type=参数类型
所属文件:     <stdarg.h>

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

void test_fn(const char *msg,const char *types, ... );
int main()
{
    printf("VA...TEST\n");
    test_fn("ARAMETERS: 1,\"abc\",546","isi",1,"abc",546);
    test_fn("ARAMETERS: \"def\", 789","si","def",789 );
    return 0;
}

static void test_fn(
const char *msg,   /* message to be printed */
const char *types, /* parameter types (i,s) */
... )              /* variable arguments    */
{
  va_list argument;
  int   arg_int;
  char *arg_string;
  const char *types_ptr;

  types_ptr=types;
  printf("\n%s -- %s\n",msg,types);
  va_start(argument,types);
  while(*types_ptr!='\0'){
    if(*types_ptr=='i'){
      arg_int=va_arg(argument,int);
      printf("integer: %d\n",arg_int);
    }else if(*types_ptr=='s'){
      arg_string=va_arg(argument,char*);
      printf("string: %s\n",arg_string);
      }
      ++types_ptr;
    }
    va_end(argument);
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。