正确使用va_arg来获取字符串

时间:2015-11-11 17:27:07

标签: c

main.c中的

我致电function(2, "string", "yes")

,其中

   void function(UINT16 id, const char *ptr_argDescr, ...)
    {
       va_start(argList, ptr_argDescr);

       va_arg(argList, ? );

//and how to copy in array result

function我希望得到yes,然后将其复制到名为result的数组中。我应该如何调用va_arg?请不要建议vsprintf。我想知道如何以上述方式做到这一点

1 个答案:

答案 0 :(得分:1)

“是”的类型为public interface MyInterface<T> where T: MyAbstractClass { T myInterfaceMethod(T blah); } public MyImplementation : MyInterface<MySubClass> { MySubClass myInterfaeMethod(MySubClass blah){ ... } } ,这是您应该使用的类型:

char*

字符串文字是只读的,所以如果你打算只传递它们,或者如果你不打算修改指针所指向的数组,你可以改为使用const char *,这样你就不会修改他们是偶然的。

然后获取字符串char* literal = va_arg(argList, char* ); 的长度,为副本literal分配存储空间,并复制字符串。