求教sprintf这个函数,该如何解决

求教sprintf这个函数
这个函数的第三个参数不能是string类型???

比如 string str="kdfa";
sprintf(sqlstr,"INSERT INTO graduate VALUES('%s')",str);
这样就崩溃。。
但是如果是
sprintf(sqlstr,"INSERT INTO graduate(number) VALUES('%s')","kdfa");
这样又没有问题,请教怎么回事

------解决方案--------------------
因为不能是string类型。。。
C/C++ code
 
    char sqlstr[100];
    string str="kdfa";
    sprintf(sqlstr,"INSERT INTO graduate VALUES('%s')",str.c_str());
    cout<<sqlstr<<endl;

------解决方案--------------------
探讨
这个函数的第三个参数不能是string类型???

比如 string str="kdfa";
sprintf(sqlstr,"INSERT INTO graduate VALUES('%s')",str);
这样就崩溃。。
但是如果是
sprintf(sqlstr,"INSERT INTO graduate(number) VALUES('%s')","kdfa");
这样又没有问……

------解决方案--------------------
探讨

int sprintf( char *buffer, const char *format [, argument] ... );

必须是C类型的字符串

------解决方案--------------------
string是STL封装的

sprintf里面最好放char类型的