如何将字符指针数组作为void*传递,然后转换回字符指针数组?

4

我将一个字符指针数组传递给sqlite3_exec,它只接受一个参数并将其呈现为void *,但是我希望在回调函数中将其作为字符指针数组访问。

char *output_params[] = {"one", "two"};
result = sqlite3_exec(db, sql_statement, callback, output_params, &zErrMsg);

....

static int callback(void *param, int argc, char **argv, char **azColName) {
    // How do I access my character array?
    char *output_params[2] = (char **)param;
}

我通过它之后该如何访问?

char **output_params = param; 这样怎么样?然后可以通过 output_params[0]output_params[1] 等方式访问 char * - Dmitri
1个回答

6
这对我有效:
int callback(void *param, int argc, char **argv, char **azColName)
{
    const char** p = (const char **)param;
    printf("%s\n", p[0]);
    printf("%s\n", p[1]);
}

这里有一个简单的程序,演示了这个概念。
#include <stdio.h>

void foo(void* in)
{
    char **p = (char**)in;
    printf("%s\n", p[0]);
    printf("%s\n", p[1]);
}

void main(int argc, char** argv)
{
   char *output_params[] = {"one", "two"};
   foo(output_params);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接