小菜小弟我程序的输出有关问题

小菜请教高手我程序的输出问题
做了个小程序要让输入的字符串正向显示以后反向显示.不过输出的时候总是多出一行,原因应该是enter被同时认为是一个character和输入的标志.而且反向显示字符串以后又会有一次正向显示,请各位帮帮忙看看哪有问题

#include   <string.h>
#include   <stdio.h>


void   tnirp(   char   s[]   )
  {   int   i;
     

      for   (i=strlen(s);   i> =0;   i--)
        {
            putchar(s[i]);
        }
      printf(   "%s ",s   );
    printf( "\n ");
    }


int   main(   void   )
{
    char   s[100];

    printf( "Enter   string:\n ");

    fgets(   s,   100,   stdin   );
    tnirp(   s   );

    return   0;
}


------解决方案--------------------
改正

#include <string.h>
#include <stdio.h>

void tnirp(char s[])
{
int i;
printf( "%s ", s); // 正向显示
printf( "\n ");

// 反向显示
for (i=strlen(s)-1; i> =0; i--)
putchar(s[i]);

printf( "\n ");
}

int main()
{
int n;
char s[100];
printf( "Enter string:\n ");
fgets(s, 100, stdin);

n = strlen(s)-1;
if (s[n] == '\n ') s[n] = '\0 '; // 忽略 '\n '字符

tnirp(s);

return 0;
}