在 C 语言中,如果两个字符串相等,strcmp() 函数将返回 0。 当我给出这样的代码时,
char str[10] = "hello";
if(strcmp(str,strrev(str))==0)
{
printf("1");
}
else
printf("0");
如果它是回文字符串,则应打印 1;如果不是回文字符串,则应打印 0。 但即使给定的字符串“hello”不是回文,它也会打印 1。哪里错了?
最佳答案
什么是strrev()
?这不是标准的 C 函数。
我的假设是它不像您想象的那样工作,即它不会创建并返回字符串的新堆副本。当然,如果您期望如此,那么就会存在一个错误,即您没有保留返回的指针,因此您可以在完成后free()
它。 p>
基本上,您似乎期望 C 字符串的行为类似于高级语言中的字符串,但事实并非如此。
关于c - 与不相等的字符串比较时,strcmp() 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26650398/