我一直在尝试在C中编写一个检测回文的函数。该计划目前如下所示:
#include <stdio.h>
#include <string.h>
int main()
{
char palindrome[24]; int palength; int halflength;
gets(palindrome);
palength = strlen(palindrome);
halflength = palength / 2;
printf("That string is %u characters long.\r\n", palength);
printf("Half of that is %u.\r\n", halflength);
return 0;
}
现在它检测到字符串的长度,并显示其中的一半。这只是为了确保它的工作方式我认为它应该如何。函数的其余部分应该做什么(如果可能的话)是从“halflength”获取整数并使用它从字符串的开头和结尾取出那些字符数并将它们存储在单独的字符串中。从那里我可以比较那些中的字符,如果字符串确实是回文,则能够返回true或false。
TL; DR - 是否可以从字符串的前端和末尾取一定数量的字符(在本例中为整数“halflength”)并将它们存储在单独的变量中。请阅读上面有关我正在尝试做的更多信息。
P.S。 - 我知道不要使用gets(),但是不想编写一个函数来截断\ n关闭fgets()。
答案 0 :(得分:4)
int len = strlen(palindrome) - 1; // assuming no \n
int half = len << 1;
for (int i=0; i<=half; ++i)
if(palindrome[i] != palindrome[len-i])
return false;
return true;
答案 1 :(得分:1)
如果你这样做会怎么样,
char *str1="lol",*str2;
str2=strrev(str1);
//如果两者相同则实际上是回文; )
答案 2 :(得分:0)
发现我正在接近这个问题。我应该如何做这个是使用指针向后和向前迭代字符。虽然如果你仍然想回答原来的问题,它在某些时候仍然有用。