找一个回文,不适合fgets

我想知道单词/短语是否是回文。 我必须使用fgets而不是获取等…使用我的代码可以工作但是fgets却没有。 有谁知道为什么?

#include  #include  #include  int main() { int i,j,len; char str[100]; printf("Enter the string: \n"); fgets(str,sizeof(str),stdin); len=strlen(str); for(i=0;i<=len;i++) str[i]=tolower(str[i]); for(i=0,j=len-1;i<j;i++,j--) { while (str[i]==' ') i++; while (str[j]==' ') j--; if( str[i] != str[j] ) { printf("NO\n"); return 0; } } printf("YES\n"); return 0; } 

这不适用于fgets因为它使用字符串保留尾随\n ; gets不是那样做的。

从文档 :

换行符使fgets停止读取,但它被函数视为有效字符,并包含在复制到str的字符串中。

要解决此问题,请调整长度以考虑尾随\n标记:转到字符串的末尾,然后向后移动直到看到非\n字符。