C++中调用mysql的c api的问题

szsailing 2004-01-28 02:17:02
我在linux下写c++程序,调用mysql 的c api
现在有个问题就是
如果象下面这样的代码,会出现Segmenttion Fault错误。
char *end;
mysql_real_escape_string(&mysql, end,"What's this",11);

如果这么写,就可以通过,
char end[1000];
mysql_real_escape_string(&mysql, end,"What's this",11);

但是由于end的长度是动态变化的,不好预先指定,请问如何解决这个问题

这个函数的原型是
unsigned long mysql_real_escape_string(MYSQL *mysql, char *to, const char *from, unsigned long length)



...全文
54 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
luopengxo 2004-01-30
  • 打赏
  • 举报
回复
*to不会超过*from的二倍.
example:
*to =new char (sizeof(*from)*2);
mysql_real_escape_string(&mysql, to,"What's this",11);
string xx=*to;
delete to;

Wolf0403 2004-01-28
  • 打赏
  • 举报
回复
同意楼上的,呵呵。char * to 看来是做输出区域的,需要预先分配内存。看看有没有说 length 是 to 的缓冲区大小的?仔细看看帮助文档
uniware 2004-01-28
  • 打赏
  • 举报
回复
看来你需要先分配好内存。
建议看看mysql_real_escape_string函数的说明,
应该可以预先计算出需要的字节数。比如:
该函数能否在to为NULL时返回预期的长度。
to的长度是否不会超出from的2倍。

64,652

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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