• 4792阅读
  • 2回复

再次求教:QT3中字符串的转换处理问题?? [复制链接]

上一主题 下一主题
离线dragonfever
 
只看楼主 正序阅读 楼主  发表于: 2011-04-27
qt3-sqlite的一个程序,make通过,但运行提示“段错误”,调试很长时间,基本可以确定是下面代码中字符串使用的问题,请大家帮忙看看哪里出的错(我把本人认为可能出错的点用红色作了标注):

13 #include "sqlite3.h"
14 #include <cstdlib>
15 using namespace std;

  16 void teaform::on_okButtonClicked()
  17 {
  18 sqlite3* db;
19 char *num=(char*)malloc(10*sizeof(char));
20 char *author=(char*)malloc(30*sizeof(char));
21 char *storage=(char*)malloc(10*sizeof(char));

  22 int rc,nRow,nCol;
23 char *sql=(char*)malloc(100*sizeof(char));
24 char *str=(char*)malloc(20*sizeof(char));

  25  
26 QString nameText=nameEdit->text();
  27 QString resultQString,errMsgQString;
  28  
  29 //open the databse:
  30 rc=sqlite3_open("library1.db",&db);
  31  
  32 //open failed:
  33 if(rc)
  34 {
  35     errMsgQString.sprintf("cannot open database: %s\n",sqlite3_errmsg(db));
  36     resultEdit->setText(errMsgQString);
  37     sqlite3_close(db);
  38 }
  39  
  40 //open successed, then do querying:
  41 else{
42     strcpy(str,nameText.ascii());
  43     sprintf(sql,"select * from book where BookName='%s';",str);
  44  
45     char **dbResult;
46     char *errmsg=(char*)malloc(100*sizeof(char));

  47     rc=sqlite3_get_table(db,sql,&dbResult,&nRow,&nCol,&errmsg);
......
sqlite3_free_table(dbResult);
sqlite3_close(db);
}
......
程序最后有调用free()函数对相关的字符串指针进行释放
free(num);
free(author);
free(storage);
free(sql);
free(str);




离线dragonfever
只看该作者 2楼 发表于: 2011-04-27
回 1楼(张燕荣) 的帖子
确实没得到!
怎么回事呢?
运行时一点okButton,界面就会卡住,然后终端提示段错误。。。
[ 此帖被dragonfever在2011-04-27 21:03重新编辑 ]
离线张燕荣
只看该作者 1楼 发表于: 2011-04-27
QString nameText=nameEdit->text();
可能nameText根本没得到nameEdit中的内容,你不妨检查下
快速回复
限100 字节
 
上一个 下一个