读书人

使用sprintf时发生访问冲突,该如何解决

发布时间: 2012-05-29 12:16:00 作者: rapoo

使用sprintf时发生访问冲突
调试程序发现运行到这一行就出错了:
sprintf(sql, "INSERT INTO Student VALUES(%s, %s, %s, %s, %s)", sno, sname, ssex, sage, sdept);
这里的sql声明是
char* sql;

char sql[100];
显示的错误信息是:
0x100720a7 (msvcr100d.dll) 处最可能的异常: 0xC0000005: 读取位置 0x0bfb7be7 时发生访问冲突
求助啊……调试半天还是没搞明白哪里出问题了。

[解决办法]
1,没分配内存
2,100够长?
3,sprintf(sql, "INSERT INTO Student VALUES('%s', '%s', '%s', '%s', '%s')", 4, mysql_real_escape_string(sno), mysql_real_escape_string(sname), mysql_real_escape_string(ssex), mysql_real_escape_string(sage), mysql_real_escape_string(sdept);
[解决办法]
一种可能就是楼主的代码里有没有分配内存却往指针所引用的内存区域写数据了。还有就是你的sql需要添加单引号的吧??如楼上说的:%s需要加单引号

读书人网 >C++

热点推荐