小菜小弟我程序的输出有关问题
小菜请教高手我程序的输出问题
做了个小程序要让输入的字符串正向显示以后反向显示.不过输出的时候总是多出一行,原因应该是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;
}
做了个小程序要让输入的字符串正向显示以后反向显示.不过输出的时候总是多出一行,原因应该是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;
}