所以我试图做一个代码来检查一个单词是否是回文。所以,我倒转了用户输入的单词并检查单词是否相等。但是,它总是返回“不等于”。有人可以善意解释为什么这不起作用吗?为什么我的代码不能检查单词是否是回文工作?
#include <stdio.h>
#include <string.h>
#define STRING_LENGTH 200
int main() {
char s[STRING_LENGTH] = {0};
fgets(s, STRING_LENGTH, stdin);
int Ordlengde = strlen(s) - 1;
printf("The word contains %i letters", Ordlengde);
int i;
char palindrom[STRING_LENGTH];
int x = 0;
for (i = Ordlengde; i >= 0; --i)
{
palindrom[x++] = s[i];
}
int Ordlengde1 = strlen(palindrom) - 1;
printf("The word contains %i letters", Ordlengde);
printf("\nThe word reversed is %s", palindrom);
printf("%s",s);
if (strcmp(s , palindrom) == 0)
printf("are equal\n");
else
printf("are not equal \n");
return 0;
}
为什么你从strlen的返回值中减去1? – bruceg
您需要null终止您在'palindrom []'中构建的字符串。 –
@bruceg我怀疑它正在剥离尾随的换行符。 –