请问,遇到segmentation fault怎么调试啊?

johndiyang 2006-05-20 11:07:06
看过了JetJoe的贴子,晕死了!
我水平太凹,一点看不懂。
http://blog.csdn.net/jetjoe/archive/2005/06/09/391271.aspx


下面描述一下我的问题吧
char *ch="abcdefgh";//本来是从网络上读取的数据,我测试时,可以用printf输出
char *sql; char sql[100]; char sql[1024]; char [3000];//说是内存问题,这几种定义方法我都尝试过。
char *query = "INSERT INTO det(source , content,date_time) VALUES('%s','%s',now())";
printf("%s\n",&ch);
sprintf(sql,query,ch[3],ch[5]);
res=mysql_query(&mysql_connection,sql);


运行提示
abcdefgh
segmentation fault
...全文
168 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
johndiyang 2006-05-20
  • 打赏
  • 举报
回复
谢谢 黄瓜,感激涕零
ZEZ ,有些东西看书看不出来啊!
把书上的搬过来能用,改动一点点就会有一大堆麻烦。不知道错误的原因,还要改回去。


总结我的错误:
1.定义ch时出错 :char *ch;没有分配空间,用他直接接收数据。(我在看原来的程序时,他有用malloc,我不知道要接收字段的长度,就把他省略了,忘记了这是一个地址指针。奇怪的是编译器并没有报错。愤怒!)
2.字符串中的引号前没有加\
3.printf("%s\n",&ch);这个在使用过程中也没有错误。(但是我会改过来的 呵呵)
zez 2006-05-20
  • 打赏
  • 举报
回复
你真牛!!
建议好好学学基础吧...

你写的纯粹是没有意义的代码,连c语言都不懂,写什么程序呀..
打基础先!!

等后来人给你详细说你的错误吧 ..
0黄瓜0 2006-05-20
  • 打赏
  • 举报
回复
#include <stdio.h>

int main()
{
char *ch="abcdefgh";//本来是从网络上读取的数据,我测试时,可以用printf输出
char *sql=new char[1024]; // char sql[100]; char sql[1024]; char [3000];//说是内存问题,这几种定义方法我都尝试过。
char *query = "INSERT INTO det(source , content,date_time) VALUES(\'%s\',\'%s\',now())";
printf("%s\n",ch);//这里不能这样 printf("%s\n",&ch);
sprintf(sql,query,&ch[3],&ch[5]);
/* 这里,如果你是想将ch串中第三个字符以后和第五个字符以后的所有字符都格式化进query的两个单引号中
格式化后为:INSERT INTO det(source , content,date_time) VALUES('defgh','fgh',now())" 这样写
sprintf(sql,query,&ch[3],&ch[5]);
如果你是想将ch串中第三个字符和第五个字符格式化进query的两个单引号中
格式化后为:INSERT INTO det(source , content,date_time) VALUES('d','f',now())"
query中的%s改为%c*/
printf(sql);

// res=mysql_query(&mysql_connection,sql);
return 0;
}

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧