C语言的小疑点,真心搞不定
C语言的小问题,真心搞不定。数据库里的NULL和空字符串是不一样的(谷歌一下数据库中的NULL吧!)要用ISNULL函
C语言的小问题,真心搞不定。
数据库里的NULL和空字符串是不一样的(谷歌一下数据库中的NULL吧!) 要用ISNULL函数判断 不能用字符串相关函数判断
[解决办法]NULL是一个重要的知识点
[解决办法]不知道你的數據表裏具體數據類型是怎樣的?
char *abcd;
//abcd = (char *)malloc(sizeof(char*) * 30);
//這裡是不需要分配内存
// db_op_result = sqlite3_step(stmt);
ncols=sqlite3_column_count(stmt);
建議你將上面這句打開,debug 看看到底有幾個字段。
printf("循环\n");
while(sqlite3_step(stmt) == SQLITE_ROW){
card_num_inuse = (char *) sqlite3_column_text(stmt, 0);
user_name_result = (char *) sqlite3_column_text(stmt, 1);
abcd = (char *) sqlite3_column_text(stmt,2);
printf("nimei1\n");
printf("%s",card_num_inuse);
printf("nimei2\n");
printf("%s",user_name_result);
printf("nimei3\n");
printf("%s",abcd);//打印这里没问题
printf("%d",strlen(abcd));//这里出现Segmentation fault
// strcpy(tmp,tvcolwm);
// if(strlen(tvcolwm) == 0){
// printf("这是空字符串啦,有问题的\n");
// }
printf("\n");
}
沒這個dm.db文件,沒法debug給你找原因。
[解决办法]
是不是用了中文?
[解决办法]
判断一下abcd是否为NULL
[解决办法]
有可能是这个原因,你用utf-8编码试试看。
[解决办法]
这么判断一下
if(abcd != NULL)
[解决办法]你要不用这个函数看看,
sqlite3_column_text16()
用来获取utf-16编码的文本。