2015-02-12 1 views
2

Я передаю массив указателей символов на sqlite3_exec, который принимает 1 параметр и представляет его как void *, но затем я хочу получить к нему доступ как массив указателей символов в функции обратного вызова.Как передать массив указателей символов как 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; 
} 

Как мне получить к нему доступ после его передачи?

+0

Как насчет 'полукокса ** output_params = парам;', и получить доступ к '' символ * с с 'output_params [0],' output_params [1] 'и т.д. – Dmitri

ответ

4

Это работает для меня:

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); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^