更改返回的可变参数函数指针

标签 c pointers function-pointers variadic-functions

我正在尝试通过指针传递一些可变参数,但我还没有完全明白。 解析器无法工作,但这不是我的问题。 我使用的是 C 的子集,但不用担心语法或词汇。

它应该像这样使用:

void functionX(void){
  action[100]="GO_PLAY(12345,23)";
  char id[10];
  char offset[10];
  ParseCommand("GO_PLAY",action,2,&id,&offset);
  // after this id should be "12345" and offset should be "23"
}

bool ParseCommand(char *command, char * buffer,int count, ...){
  bool returnvalue=FALSE;
  int command_len=O_strlen(command);
  int buffer_len=O_strlen(buffer);
  int j=command_len+1;
  va_list ap;
  int parameter=0;
  char *parsed_text;
  va_start(ap, count);         /* Initialize the argument list. */
  while(parameter<count) {
    while(buffer[j]!=','&& buffer[j]!=')') //search argument
      j++;
    if(j<buffer_len) { // argument found
      calloc(MODULE,parsed_text,j-(command_len+1),sizeof(char));
      substr(command_len+1,j,buffer,parsed_text,buffer_len);
      *va_arg(ap,char*)=parsed_text; // why isnt this working?
      parameter++;
      j++; // to continue to search
    }
  }
  leave:
  va_end (ap);
  return returnvalue;
}

最佳答案

而不是*va_arg(ap,char*)=parsed_text

尝试:sprintf(va_arg(ap, char*), "%s", parsed_text);

关于更改返回的可变参数函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5500863/

相关文章:

c++ - 这是查找动态分配数组长度的好方法吗?

c++ - 模板类中的模板转换运算符-函数指针

c - 如何在 C 中浏览任意长度的字符串数组?

c - (int, const char *) 作为 uthash 库的复合键

将 char 数组转换为 struct * 类型

function - Golang 使用任意接口(interface)传递函数参数

c - 返回类型为 void (*signal(int signo, void *(func)(int)))(int) 的原因

c++ - Code::Block 未创建调试版本?

arrays - 如何使用 qsort 对结构体指针数组进行排序

c - C 中指针的声明和初始化