输入多行字符串,把这些字符串逆序且反转输出(C语言)

#include<stdio.h>
#include<string.h>
void h(char *s)
{
int c,i,j;
for(i=0,j=strlen(s)-1; i<j; i++,j--)
{
c=s[i];
s[i]=s[j];
s[j]=c;
}
}
int main()
{
char a[100];
while(gets(a)!= NULL)
{
h(a);
puts(a);
}
return 0;
}
我这个代码只能输入一行反转输出一行,怎么用二维数组改成输入多行然后全部反转输出?

1、先用字符串数组读取多行字符串,再挨着逆序反转输出即可。

2、例程:

void main(void){
    char str1[10];
    int i,ln;//增加一个ln计长度吧
    char str2[10]="";//这里改了
    char c[10];
    gets(str1);
    ln=strlen(str1);//增加一句测出你输入的长度
    for(i=0;i<ln;i++){//用实际输入的长度控制
        c[i]=str1[i];
        str2[ln-1-i]=c[i];//用实际输入的长度控制
    }
    puts(str2);
    printf("\n");
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-11-17
#include<stdio.h>
#include<string.h>
char *invertstr(char *s)
{
int i;
char ch;
int n=(int)strlen(s);
for(i=0;i<n/2;i++)
{
ch=s[i];
s[i]=s[n-1-i];
s[n-1-i]=ch;
}
s[n]='\0';
return s;
}
int main()
{
char str[30][30];
int i,n=0;
while(gets(str[n++])!=NULL);
for(i=n-2;i>=0;i--)
{
printf("%s\n",invertstr(str[i]));
}
return 0;
}

本回答被提问者和网友采纳
相似回答