Vig*_*gam -2 c string palindrome strcmp
在C中,如果两个字符串相等,strcmp()函数返回0.当我给出这样的代码时,
char str[10] = "hello";
if(strcmp(str,strrev(str))==0)
{
printf("1");
}
else
printf("0");
Run Code Online (Sandbox Code Playgroud)
如果它是一个回文字符串,则应打印1,如果不是回文,则应打印0.但即使给定字符串"hello"不是回文,它也会打印1.哪里出错了?
什么是strrev()?那不是标准的C函数.
我的假设是它不会像你想象的那样工作,即它不会创建并返回字符串的新堆拷贝.当然,如果您希望如此,那么就会有一个错误,您不会保留返回的指针,以便free()在完成后可以使用它.
基本上,您似乎期望C字符串在更高级别的语言中表现得像字符串,但实际上并非如此.