c - 与不相等的字符串比较时,strcmp() 返回 0

标签 c string palindrome strcmp

在 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/

相关文章:

在 C 编程语言中更改菜单中的 #define 值

python - 在 Raspi 上使用带有 Python 的 C 库

C++ 字符串数组切片

string - 如何检测字符串中的回文循环长度?

c - 如何在 C 中存储指向已分配内存区域的偏移位置的指针?

C无限循环中的Collat​​z递归

Javascript - 字符串到坐标数组

java - 当 EditText 中只有一个字符时防止退格

javascript - 如何创建回文检查器?

c - 仅使用 C 中的循环回文