sqlite3中使用callback传递参数时的一点问题

时间:2021-09-05 05:32:26
struct Comp_table
{
int num;
char epc[24];
int flag;
};

int callback_flag(void *unknown, int coulmn_number, char **coulmn_value, char **coulmn_name)
{
int i = 0;
struct Comp_table *p = NULL;
p = (struct Comp_table *)unknown;

for(i = 0; i < coulmn_number; i++)
{
DEBUG_MSG("%6s : %s\n", coulmn_name[i], coulmn_value[i]);
}

p->num = (int)atoi(coulmn_value[0]);
p->epc = (char)coulmn_value[1];                        //*** 这里出错了 ***,请问该如何改啊
p->flag = (int)atoi(coulmn_value[2]);

DEBUG_MSG("p->epc : %s\n", p->epc);
DEBUG_MSG("coulmn_value[1] : %s\n", coulmn_value[1]);

return 0;
}

我想获取那个字符串的数据,新手对这个完全不解

3 个解决方案

#1


把struct 里面的 epc 改为char *型的会报Segmentation fault

#2


Windows:
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。

Linux:
进程意外退出会在当前目录下产生‘core’文件或形如‘core.数字’的文件比如‘core.1234’
使用命令
gdb 运行程序名 core或core.数字
进入gdb然后使用bt命令
可以查看进程意外退出前函数调用的堆栈,内容为从上到下列出对应从里层到外层的函数调用历史。
如果进程意外退出不产生core文件,参考“ulimit -c core文件最大块大小”命令

#3


把 p->epc = (char)coulmn_value[1];
改为
strcpy(p->epc,coulmn_value[1]);

#1


把struct 里面的 epc 改为char *型的会报Segmentation fault

#2


Windows:
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。

Linux:
进程意外退出会在当前目录下产生‘core’文件或形如‘core.数字’的文件比如‘core.1234’
使用命令
gdb 运行程序名 core或core.数字
进入gdb然后使用bt命令
可以查看进程意外退出前函数调用的堆栈,内容为从上到下列出对应从里层到外层的函数调用历史。
如果进程意外退出不产生core文件,参考“ulimit -c core文件最大块大小”命令

#3


把 p->epc = (char)coulmn_value[1];
改为
strcpy(p->epc,coulmn_value[1]);