c语言中判断字符串是否为回文字符串中fgets和gets的区别


#include <stdio.h>
#include <string.h>
int main(void)
{
    char str1[30];
    char str2[30];
    int i,j;
    int cnt=0;
    int len;
    printf("请输入你想要去验证的字符串:");
    gets(str1);
    len=strlen(str1);
    for(i=0,j=len-1;i<len-1,j>=0;i++,j--){
        str2[j]=str1[i];
    }
    for(i=0;i<len-1;++i){
        if(str1[i]==str2[i]){
            cnt++;
        }
    }
    if(cnt==len-1){
        printf("是回文数");
    }
    else{
        printf("不是回文数"); 
    }
    return 0;
}

这是我在学习字符串时的一个练习,我发现如果将gets换成fgets则无论输入什么样的字符串都会显示不是回文字符串;
我也无法通过调试来搞明白其中的问题
我想知道的是为什么fgets是不可以的

你输入多长的字符串啊
fgets要求指定读入的字符串长度,你是怎么调用fgets函数的呢

fgets读取输入字符串时会包含字符串之后的换行符,多了一个换行符自然就不是回文字符串了。
而用gets读取输入字符串不会包含换行符
如有帮助,望采纳!谢谢!