C语言Palindrome

请问这个应该怎么做?要求是不要使用scanf- 用fgets读取字符串。请大lao编程1下。

img

供参考:

#include<stdio.h>
#include<string.h>
int main()
{
    int i=0,flg=1,len;
    char ch,s[4096];
    printf("Enter a string:");
    while((ch=getchar()) && ch != '\n')s[i++]=ch;
    s[i] = '\0';
    len = strlen(s);
    for(i=0;i<len/2;i++){
        if(s[i] != s[len-1-i]){
            flg = 0;
            break;
        }
    }
    if(flg)  printf("String is a palindrome\n");
    else     printf("String is not a palindrome\n");
    
    return 0;
}
#include <stdio.h>

#define N 4096

int main()
{
    char str[N];
    fgets(str,N,stdin);

    int i,len=0;

    for(len=0;;len++)
    {
        if(str[len]==0 || str[len]=='\n')break;
    }

    for(i=0;i<len/2;i++)
    {

        if(str[i]!=str[len-i-1])
            break;
    }
    if(i==len/2)
        printf("palindrome");
    else
        printf("No palindrome");
    
    return 0;
}