代码之家  ›  专栏  ›  技术社区  ›  Rohit Banga

如何在C中打印变量参数的值?

  •  1
  • Rohit Banga  · 技术社区  · 15 年前

    我有一个函数

    void func(int x, char *str, ...)
    {
      ...
    }
    

    我援引它如下:

    func(1, "1", "2", "3");
    

    3 回复  |  直到 15 年前
        1
  •  1
  •   user191776 user191776    15 年前

    从的手册页 STDARG va_arg 要获取下一个参数:

    如果没有下一个论点,或者 实际下一个参数的类型(如 将会发生。

    void func(int x,char *str, ...)
    {
        va_list al;
        va_start(al,str);
    
        while(x>0)
        {
            str=va_arg(al,char *);
            --x;      
        }
    
        while(str != NULL)
        {
            printf("%s ",str);
            str=va_arg(al,char *);
        }
        va_end(al);
    }
    

    用,

    func(1,"1","2","3");
    

    我得到了结果,

    2 3 U��WVS�O  
    

        2
  •  1
  •   user82238 user82238    15 年前

    变量参数通常传递一个描述变量参数的字符串,例如printf(char*format_string,…);

    传递一个描述变量参数的附加参数,然后使用该信息处理变量参数。

    因此,如果您收到一个类似printf的格式字符串,并且它是“%d%u”,您就知道您有一个int,后跟一个无符号int。

        3
  •  0
  •   Community Mohan Dere    9 年前

    查找此站点中的va\u列表。例子: What is ellipsis operator in c