我正在处理一项任务,我必须从用户那里获取句子输入,以相反的顺序打印单词,检查字谜,并检查回文。我有一个适用于字谜的函数,而且我的回文函数几乎可以正常工作。现在,我只要求两个词,这样我就可以让我的功能正常工作。然而,出于某种原因,每当我为我要求的两个词输入一个冗长的回文(例如;racecar 或与妈妈或爸爸相比脱发)时,回文功能就会变得混乱。
这是代码;
#include <stdio.h>
#include <ctype.h> //Included ctype for tolower / toupper functions
#define bool int
#define true 1
#define false 0
//Write boolean function that will check if a word is a palindrome
bool palindrome(char a[])
{
int c=0;
char d[80];
//Convert array into all lower case letters
while (a[c])
{
a[c] = (tolower(a[c]));
c++;
}
c = 0;
//Read array from end to beginning, store it into another array
while (a[c])
c++;
while(a[c] != 0 && c > -1)
{
d[c] = a[c];
c--;
}
c = 0;
while(a[c])
{
printf("%c", d[c]);
printf("%c", a[c]);
c++;
}
//If two arrays are equal, then they are palindromes
for(c = 0; a[c] && d[c]; c++)
{
while(a[c] && d[c])
{
if(a[c] != d[c])
return false;
}
}
return true;
}
int main(void)
{
char a[80], b[80];
bool flagp;
//Prompt user to enter sentence
printf("Enter a word: ");
gets(a);
flagp = palindrome(a);
if (flagp)
{
printf("\nThe word is a palindrome.");
}
else
{
printf("\nThe word is not a palindrome.");
}
return 0;
}
它输出这个;
Enter first word: racecar
_r▬a↨c e c a r
The word is not a palindrome.
但是,如果我输入“racecar”,它会错误地指出它不是回文。
请告诉我我做错了什么:'(