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

  • 相关阅读:
    flash中网页跳转总结
    as3自定义事件
    mouseChildren启示
    flash拖动条移出flash无法拖动
    需要一个策略文件,但在加载此媒体时未设置checkPolicyFile标志
    Teach Yourself SQL in 10 Minutes
    电子书本地转换软件 Calibre
    Teach Yourself SQL in 10 Minutes
    Teach Yourself SQL in 10 Minutes
    Teach Yourself SQL in 10 Minutes – Page 31 练习
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/11125682.html
Copyright © 2011-2022 走看看