Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Strcmp不工作,即使在比较相同字符时也是如此_C++_C_Arrays_String_Strcmp - Fatal编程技术网

C++ Strcmp不工作,即使在比较相同字符时也是如此

C++ Strcmp不工作,即使在比较相同字符时也是如此,c++,c,arrays,string,strcmp,C++,C,Arrays,String,Strcmp,我很困惑。我正在做一个需要使用strcmp的项目,但它似乎根本不起作用。上面您可以看到gdb中的一个示例,其中两个字符被称为不相等。当我比较我的两个字符数组时,结果明显相似。此外,当我将数组与其自身进行比较时,我也得到了false(上面的名称是char[8])。当我在同一个数组上的代码中运行strcmp时,它会生成正确的结果,但不会在gdb中运行(见第三幅图),我只需要一个关于在哪里查找/做什么的线索 谢谢 编辑:图像中的两个代码片段: print strcmp("S", "S")==0 你使

我很困惑。我正在做一个需要使用strcmp的项目,但它似乎根本不起作用。上面您可以看到gdb中的一个示例,其中两个字符被称为不相等。当我比较我的两个字符数组时,结果明显相似。此外,当我将数组与其自身进行比较时,我也得到了false(上面的名称是char[8])。当我在同一个数组上的代码中运行strcmp时,它会生成正确的结果,但不会在gdb中运行(见第三幅图),我只需要一个关于在哪里查找/做什么的线索

谢谢

编辑:图像中的两个代码片段:

print strcmp("S", "S")==0

你使用了一组错误的引号

strcmp
函数要求两个参数的类型均为
const char*
,即指向以null结尾的字符串的指针。在C++(和C)中,单引号用于单个字符,而双引号用于空终止字符串。因此,您没有传递正确类型的参数

进行这种比较的正确方法是:

strcmp("S", "S") == 0

当字符串相等时,strcmp返回0,false,我想应该是1,true。但事实就是这样。您可以将其封装在自己的函数中,并且您的函数可以返回true

这些是你截图中的单引号吗?(旁注:最好以文本形式发布,而不是以图形形式发布,这样文本更易于查看和验证)。如果它们是单引号,那么很可能没有正确调用
strcmp()
——它希望其参数的类型是
const char*
,而不是
char
。因此,尝试使用双引号(即<代码>打印STRMP(“S”,“S”)= .4=“代码”> C。= C++。请选择一个函数没有足够的参数,另一个具有未知的参数……并且您不必将其转载为TeX..A.Smith.我刚运行<代码>打印STRMP(名称,名称)。==0在
gdb
中得到1。因此,除非我们了解您的设置和我的设置之间的区别,否则我们无法帮助您。请提供您的源代码以及有关编译器和系统的信息。@A.Smith您现在调用的是不同的函数,参数的数量不正确。您是说您得到了错误的输出,但我这是不可能重现的。我刚刚运行了这个精确的函数,得到了
true
…因此,除非您共享代码的相关部分,否则我们只能假设错误是与您的代码有关,而不是与此函数有关。@calvinBroadus我只是觉得运行此代码会让您头疼,所以我将其忽略。不过,我还是把它放了出来。@a.Smith it it这就是为什么在中有“minimal”这个词的原因。你应该从代码中删除不相关的部分(但要让它一直运行),直到问题解决为止remains@calvinBroadus如果优化了STRCMP,则在调试C++程序时,可以对STRCMP进行GDB的评价,从而导致<>代码>打印STRMP。(名称,名称)返回随机值,该值可能是0,也可能不是。因此,OP在尝试计算函数时出错,以指示函数操作中的错误。strcmp的问题通常是字符串末尾有一个\n,请注意,或者字符串开头有一个空白。
strcmp("S", "S") == 0