我有一些与我的C程序挣扎! 它应该检查一个字符串是否是回文或不!它不应该关注非字母字符,所以程序应该认识到这是一个回文。 “他住过魔鬼,呃?” 这就是我走到这一步:C程序来检查字符串是否是Palindrome
#include <stdio.h>
#include <stdlib.h>
int main()
{
char sentence[39];
int left = 0;
int right = 40;
printf("Enter a message: ");
fgets(sentence, 40, stdin);
while(1) {
while(left < right && !(isalpha(sentence[left])))
left++;
while(right > left && !(isalpha(sentence[right])))
right--;
if(left >= right)
break;
else {
if(sentence[left] != sentence[right]) {
printf("Not a Palindrome");
return 0;
}
left++;
right--;
}
}
printf("Palindrome");
return 0;
}
它总是打印:NOT回文! 即使它是一个。
你尝试连基本的printf调试?你认为'fgets'在字符串的末尾留下了一个'\ n'吗? –
'句子[右]'当'right == 40'是初始值时无效。 – timrau
您应该将字符转换为大写或小写。 'H!= h'。 –