私のCプログラムにはいくつかの苦労があります! 文字列がパリンドロームかどうかチェックする必要があります。アルファベット以外の文字には注意を払うべきではないので、プログラムはこれを回文として認識すべきです! "彼は悪魔として住んでいましたか?"C文字列がパリンドロムかどうかを確認するプログラム
#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 PALINDROMEを私はこれまでに得たものです ! 1であっても。
のように見えるかもしれないあなたも、基本的なのprintfデバッグをしようとしましたか? 'fgets'が文字列の最後に' \ n'を残していると考えましたか? –
'right == 40'が初期値であった場合、' sentence [right] 'は無効です。 – timrau
キャラクタを小文字または大文字に変換する必要があります。 'H!= h'。 –