假设MyFunction是我自定义的函数
char buf[ 1024 ];
char Return_msg[ 140 ];
memset(Return_msg,0,sizeof(Return_msg));
MyFunction(Return_msg);
sprintf(buf,"返回结果:%s",Return_msg); //************ 1 **********
AfxMessageBox(buf);结果显示出来的是 "返回结果:"后面没了我在 1 处设置了断点,在Debug下看到 Return_msg的值是"0x0012f220 测试成功"为什么?没显示出来呢,0x0012f220 是什么东西啊?错在哪里?
char buf[ 1024 ];
char Return_msg[ 140 ];
memset(Return_msg,0,sizeof(Return_msg));
MyFunction(Return_msg);
sprintf(buf,"返回结果:%s",Return_msg); //************ 1 **********
AfxMessageBox(buf);结果显示出来的是 "返回结果:"后面没了我在 1 处设置了断点,在Debug下看到 Return_msg的值是"0x0012f220 测试成功"为什么?没显示出来呢,0x0012f220 是什么东西啊?错在哪里?
解决方案 »
- vs2005如何连接SQL2000?
- 高手帮忙看看,堆栈调用消息处理函数怎么这样?
- 问一个与invalidateRect()有关的问题
- 在ListView中如何实现subitem的多选
- 软件制作过程怎么写?
- 【求教】如何使随分辨率变化而缩放显示的背景图片不会失真???
- 封装了P2P连接与数据传输过程的DLL(二)
- 谁有有关esmtp(身份验证)的发邮件的程序
- mshtml也是个笨蛋,遇到COLSPAN就分不请东西南北了,,把本该是第3列的内容认为是,第二列,我????????
- 什么时候应该用CAtlString而不是CComBSTR?
- 如何消除STL的警告?
- 关于DShow 中自己写的filter的使用??
sprintf(buf,"返回结果:%s",Return_msg);
怎么改正.
char buf[ 1024 ];
char Return_msg[ 140 ];
memset(Return_msg,0,sizeof(Return_msg));
strcpy(Return_msg, "测试成功");
sprintf(buf,"返回结果:%s",Return_msg); //************ 1 **********
AfxMessageBox(buf);
是对的。
这一句错了吧?
是不是要改成memset(Return_msg,0,sizeof(char));
{
RETCODE ret;
ret = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);
if( ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO )
return -1001; ret = SQLSetEnvAttr(henv,(SQLCHAR)SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
if( ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO )
return -1002; ret = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
if( ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO )
return -1003; ret = SQLConnect(hdbc,(SQLCHAR*)ODBCName,SQL_NTS,
(SQLCHAR*)UserName,SQL_NTS,
(SQLCHAR*)Passwd,SQL_NTS);
if( ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO )
return -1004; ret = SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);
if( ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO )
return -1005; return 0;
}void MyFunction(char Return_msg[ 140 ])
{ char buf[ 1024 ];
RETCODE retcode;
int re = ODBC_CONNECT("wusoft1",NULL,NULL);
if( re != 0)
{
sprintf(buf,"连接数据库失败,错误代码:%d",re);
m_listctrl.InsertItem(0,buf,0);
}
else
m_listctrl.InsertItem(0,"连接数据库成功!",0);
char UserID[20];
int FeeValue = 0; SQLINTEGER cbUserID = SQL_NTS,cbFeeValue = SQL_NTS,cbReturn_msg = SQL_NTS;
retcode = SQLPrepare(hstmt,(unsigned char*)"{call AP_TEST(?,?,?)}",SQL_NTS);
if( retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
{
m_listctrl.InsertItem(0,"准备存储过程失败!",0);
return;
} retcode = SQLBindParameter(hstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,20,0,UserID,0,&cbUserID); retcode = SQLBindParameter(hstmt,2,SQL_PARAM_OUTPUT,SQL_C_SSHORT,SQL_INTEGER,0,0,&FeeValue,20,&cbFeeValue); retcode = SQLBindParameter(hstmt,3,SQL_PARAM_OUTPUT,SQL_C_CHAR,SQL_CHAR,140,0,Return_msg,140,&cbReturn_msg); strcpy(UserID,"8613012345678");
memset(Return_msg,0,sizeof(Return_msg));
retcode = SQLExecute(hstmt);
if( retcode != SQL_SUCCESS && retcode != SQL_SUCCESS_WITH_INFO )
{
m_listctrl.InsertItem(0,"执行存储过程失败!",0);
return;
} return;
}
void MyFunction(char *Return_msg)即可。
memset(Return_msg,0,sizeof(Return_msg));
不知道你想干什么,这样的话就把Return_msg清空了,所以才得到了你的结果.
memset(Return_msg,0,sizeof(Return_msg));
后面还少了一句对Return_msg的赋值
加上strcpy(Return_msg, "测试成功");