【发布时间】:2020-04-03 05:50:39
【问题描述】:
我很困惑。我正在开发一个需要使用 strcmp 的项目,但它似乎根本不起作用。上面你在 gdb 中看到了一个例子,其中两个字符被认为是不相等的。当我比较我的两个 char 数组时,显然结果相似。此外,当我将数组与它们自身进行比较时,我也会得到错误(上面的名称是 char[8])。当我在同一个数组上的代码中运行 strcmp 时,它会产生正确的结果,但不会在 gdb 中(见第三张图片)我只需要在哪里查看/做什么。
谢谢。
编辑:图片中的两个代码片段:
print strcmp("S", "S")==0
print strcmp(name, name)==0
【问题讨论】:
-
你的截图中有那些单引号吗? (旁注:最好将文本发布为文本,而不是图形,特别是这样文本可以更容易查看和验证)。如果它们是单引号,那么很可能
strcmp()没有被正确调用——它期望它的参数是const char *类型,而不是char。因此,请尝试使用双引号(例如print strcmp("S", "S") == 0。 -
C != C++。请选择一个
-
一个函数没有足够的参数,另一个有未知的参数...
-
而且你一直在移动代码而不将其作为文本发布......
-
@A.Smith 我刚刚在
gdb中运行print strcmp(name,name)==0并得到1。因此,除非我们了解您和我的设置之间有什么不同,否则我们无法帮助您。请提供您的源代码以及有关编译器和系统的信息。
标签: c++ c arrays string strcmp