为什么我的strcmp失败了
Why does my strcmp fail?
我正在开发一个应用程序,如果给出了特定的错误消息,它将被忽略:
[Oracle][ODBC][Ora]Ora-24438:语句句柄未执行
我的比较代码如下:
char Sqlstate[10];
long NativeErrorPtr;
char MessageText[1024];
long BufferLength=1024;
long TextLengthPtr;
SQLGetDiagRec(SQL_HANDLE_STMT,sqlc.g_hstmt,1,(SQLCHAR *) Sqlstate,(SQLINTEGER *) &NativeErrorPtr,
(SQLCHAR *) MessageText,(SQLSMALLINT) BufferLength,(SQLSMALLINT *) &TextLengthPtr);
success=false;
char* msg = MessageText;
char* oracleMsg = "[Oracle][ODBC][Ora]ORA-24338: statement handle not executed";
int i = strcmp(msg, oracleMsg);
我得到了i ==1
。当我将鼠标悬停在msg
和oracleMsg
上时,它们看起来完全相同。这是每个变量的复制文本。
oracleMsg 0x00c1cd88"[Oracle][ODBC][Ora]Ora-24338:语句句柄未执行"char*
msg 0x0132d0a4"[Oracle][ODBC][Ora]Ora-24338:语句句柄未执行"char*
我的问题一定是它没有以NULL结尾。我听从了ibre5041的建议,使用了if((strncmp(msg, oracleMsg, 55))== 0)
。这只比较前55个字符,避免了非NULL终止的问题。
相关文章:
- 如果没有malloc,链表实现将失败
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- 视图中的参数推导失败:take_while
- 链接到自行创建的dll失败
- 带有特殊路径部分的"std::filesystem::weakly_canonical"失败
- GetShortPathName在网络驱动器上使用中文文件夹时失败
- gcc和c++17的过载解析失败
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- 在WSL:configure_file上对config_file的每次调用都失败:配置文件时出现问题
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 链接阶段在Ubuntu上失败,但在MacOS上失败
- 从父数组测试用例构造二叉树失败
- LibGit2 SSH身份验证失败
- 如何让LLDB在成功时退出,在失败时等待
- 在代码中使用 strcmp,编译>测试>失败,调试,意识到我忘记了 0==strcmp
- 为什么我的strcmp失败了
- 如何检查“strcmp”是否失败
- 2我的strcmp函数测试失败