zoukankan      html  css  js  c++  java
  • vsprintf

     
    /* 函数名: vsprintf
    功 能: 送格式化输出到串中
    返回值: 正常情况下返回生成字串的长度(除去\0),错误情况返回负值
    用 法: int vsprintf(char *string, char *format, va_list param);
    // 将param 按格式format写入字符串string中
    注: 该函数会出现内存溢出情况,建议使用vsnprintf
    程序例:
    */
    #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(void)
    {
    int inumber = 30;
    float fnumber = 90.0;
    char string[4] = "abc";
    vspf("%d %f %s", inumber, fnumber, string);
    printf("%s\n", buffer);
    return 0;
    }
    该程序结果为
    30 90.000000 abc
    VA_LIST的用法( VA_LIST 是在C语言中解决变参问题的一组宏):
    (1)首先在函数里定义一个VA_LIST型的变量,这个变量是指向参数的指针
    (2)然后用VA_START宏初始化变量刚定义的VA_LIST变量,这个宏的第二个
    参数是第一个可变参数的前一个参数,是一个固定的参数。(如在运行VA_START
    (ap,v)以后,ap指向第一个可变参数在堆栈的地址。)
    (3)然后用VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型。
    (4)最后用VA_END宏结束可变参数的获取。然后你就可以在函数里使用第二个参数了。
    如果函数有多个可变参数的,依次调用VA_ARG获取各个参数。
     
  • 相关阅读:
    HDU 3068 Manacher
    HDU 6188最小费用流
    Codeforces Round #442 (Div. 2) Danil and a Part-time Job
    并查集
    HDU 5988最小网络流(浮点数)
    HOJ
    HOJ
    POJ
    POJ
    关于async
  • 原文地址:https://www.cnblogs.com/nufangrensheng/p/3021916.html
Copyright © 2011-2022 走看看