c语言 sqlite get_table 时候segmentation fault

发布网友 发布时间:2022-04-21 20:26

我来回答

3个回答

热心网友 时间:2022-04-08 19:16

segmentation fault 即 段错误
一般都是非法内存操作,例如数组越界,指针乱指什么的。。。
我猜可能是strcat(temp, number);这句有问题。
strcat是连接字符串吧,第二个参数是字符串头地址,number估计是整型吧,用在这里肯定非法操作了。
用sprintf吧
sprintf(temp, "SELECT * FROM student WHERE NUMBER= '%d';", number);追问number 是一个char 数组

追答那就设断点调试,看temp具体是否正确,把sqlite3_get_table的返回值赋值,看是否查询成功。
不设断点那就插入printf随便输出点信息看看到底到那里出错了
printf("sql: %s",temp);
result = sqlite3_get_table( db , temp , &azResult , &nrow , &ncolumn , &zErrMsg );
if(SQLITE_OK == result)
{
for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )
printf( "azResult[%d] = %s\n", i , azResult[i] );
}
else
{
printf("查询失败\n");
//.......
}

热心网友 时间:2022-04-08 20:34

sqlite3_get_table 在不同环境执行效果不一样,可能该 API存在bug,以实际测试情况为准

热心网友 时间:2022-04-08 22:09

azResult 二重指针取地址,估计是这里没有初始化吧

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com