zoukankan      html  css  js  c++  java
  • 可变参数输出(三)

    Linux C关于输出函数的定义:

    int printf(const char *format,…);
    int vprintf(const char * format,va_list ap);
    int vfprintf(FILE *stream,cosnt char *format,va_list ap);
    int vsprintf(char *str,const char *format,va_list ap);
    int vsnprintf(char *str,size_t size,const char*format,va_list ap);

    va_list ap; //首先定义了一个va_list类型的变量

    void va_start(va_list ap, last); //va_start的第一个参数va_list变量,第二个参数为函数的最后一个固定参数

    void va_end(va_list ap); //用va_end结束迭代

    type va_arg(va_list ap,type);

    使用int_vsnprintf(char* str,size_t size,const char * format,va_list ap); 函数进行格式转化输出不定参数函数。

    vsnprintf()是c语言库函数之一,属于可变参数,用于向字符串打印数据以及数据格式和用户自定义等。

    头文件:#include<stdio.h>

    函数声明:int_vsnprintf(char* str,size_t size,const char *format,va_list ap);

    参数说明:

    char* str [out]:把生成的格式化的字符串存放在这里。

    size_t size [in]: str可接受的最大字节数防止产生数组越界。

    const char *format: [in] 指定输出格式的字符串,它决定了你需要提供的可变参数的类型,个数顺序。

    va_list ap [in] ,va_list变量,va:variable-argument:可变参数。(就是…里所包含的内容存放到这个变参数的变量当中去);

    变长数据的读取方式

    va_start(args,fmt);
    size_t buf_len = vsnprintf(buffer,MAX_LOG_LEN,str_format,args);
    va_len(args);

    可变参数实例:

    /***
    vsnprintf.c
    ***/
    #include<stdio.h>
    #include<stdarg.h>
    
    void my_print(char *fmt,...)
    {
        va_list args;
        va_start(args,fmt);
        char buff[1024];
        vsnprintf(buff,1023,fmt,args);
        printf("%s
    ",buff);
        va_end(args);
    }
    
    int main()
    {
        int age = 78;
        my_print("hello world");
        my_print("hello %d",2345);
        my_print("hello my age is : %d",age);
        return 0;
    }

    输出结果:

    exbot@ubuntu:~/wangqinghe/C/20190703$ gcc vsnprintf.c -o vsnprintf

    exbot@ubuntu:~/wangqinghe/C/20190703$ ./vsnprintf

    hello world

    hello 2345

    hello my age is : 78

  • 相关阅读:
    HDU 1010 Tempter of the Bone
    HDU 4421 Bit Magic(奇葩式解法)
    HDU 2614 Beat 深搜DFS
    HDU 1495 非常可乐 BFS 搜索
    Road to Cinema
    Sea Battle
    Interview with Oleg
    Spotlights
    Substring
    Dominating Patterns
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/11125682.html
Copyright © 2011-2022 走看看