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

  • 相关阅读:
    【JavaScript】JavaScript学习 四 JavaScript 语句
    【Javascript】javascript学习 十二 JavaScript 函数
    【Javascript】javascript学习 六 七 JavaScript 变量/运算符
    【JavaScript】JavaScript学习 三 把 JavaScript 放置到何处
    【Javascript】javascript学习 十四 JavaScript Break 和 Continue
    【Javascript】javascript学习 十 JavaScript 消息框
    如何查询数据库的主键约束schema?
    无限级下拉列表的无限级分级[asp.net](转)
    结构体
    对typedef的了解
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/11125682.html
Copyright © 2011-2022 走看看