我将一个指向指针 (**resultSet) 的指针传递给我的 MySQL 函数。
以下是我如何从函数中复制 MySQL 数据的摘录:
int
getItems(char * cmd, char **resultSet)
{
...
MYSQL initialisations and set-up
...
resultSet = malloc(sizeof(char)*(int)mysql_num_rows);
while((row = mysql_fetch_row(result)))
{
for (i=0 ; i < mysql_num_fields(result); i++)
{
printf("%i: \t", i);
resultSet[counter] = malloc(sizeof(char)*strlen(row[i])+1);
strcpy(resultSet[counter], row[i]);
printf("%s\n", resultSet[counter]);
}
printf("---------------------\n");
counter++;
}
...
MYSQL cleaning up
...
return 0;
}
在 main 中调用它
getItems(cmd, resultSet);
在我的 getItems 函数中这个
printf("%s\n", resultSet[0]);
似乎有效。
但是,如果我尝试从我的函数外部访问它,我会遇到段错误。这是为什么?
最佳答案
你可能想要:
resultSet = malloc(sizeof(void *)*(int)mysql_num_rows);
代替:
resultSet = malloc(sizeof(void)*(int)mysql_num_rows);
因为你需要指针而不是字节。
关于C初学者题: Pointer to a pointer/Can't access values from outside a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6001553/