/*
主题:判断一个字符串是否是回文
*/
#include <stdio.h>
int StrLen(char *str);
int IsRevStr(char *str);
int main(void)
{
char str1[] = "*1234321*";
char str2[] = "1234221";
if (IsRevStr(str1))
{
puts("str1是回文数");
}
else
{
puts("str1不是回文数");
}
if (IsRevStr(str2))
{
puts("str2是回文数");
}
else
{
puts("str2不是回文数");
}
return 0;
}
/*
函数功能:判断一个字符串是否是回文
参数: str:字符数组的指针
返回值:
TRUE:是回文
FALSE:不是回文
*/
int IsRevStr(char *str)
{
int index, len;
char *start, *end;
if (NULL == str)
{
return 0;
}
index = 1;
len = StrLen(str);
/*
start:指向字符串的第一个字符
end:指向字符串的最后一个字符
特别注意start + len -1,这里需要减1
*/
start = str;
end = str + len - 1;
//开始遍历字符串
while(start <= end)
{
//如果对应位置的字符不相等,返回FALSE,则跳出整个循环。
if (*start++ != *end--)
{
index = 0;
break;
}
}
return index;
}
/*
函数功能:返回一个字符串长度
*/
int StrLen(const char *str)
{
int len = 0;
while(*str++ != '\0')
{
len++;
}
return len;
}