C语言将字符串逆序输出问题(用函数)

写一个函数,使输出的字符串逆序存放,然后这是我的程序:
#include<stdio.h>
#include<string.h>
int main()
{
char str[100];
char opstr[100];
int length=0;
void op(char str[100],char opstr[100],int length);
length=strlen(str);
printf("nput string:\n");
scanf("%s",str);
op(str,opstr,length);
printf("inverse string:%s\n",opstr);

return 0;
}
void op(char str[100],char opstr[100],int length)
{
int i=0;
for(i=0;i<length;i++)
{
opstr[i]=str[length-i];
}

}
运行结果

求高手帮忙,额,我字符串这块没学好,麻烦了

采用函数进行字符串逆序输出,过程为:

    定义函数,参数为字符串指针

    定义局部变量指针t指向原字符串

    移动t指针到字符串尾

    向移动t指针,直到回到原指针头,输出各位置字符。

参考代码:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-01

没有看明白你的代码,如果只是想把字符逆转后再输出.这应是很简单的,下面我写了一个逆转字符后并输出的代码:

#include <stdio.h>
#include <string.h>
#define  STRING_MAX_LONG 100
/*  Function prototypes */
void swaping(char*,char*),InverseString(char*,int);

void main()
{
   char str[STRING_MAX_LONG];
   int strLen=0;
   printf("Please input string:");
   scanf("%s",str);

   InverseString(str,strlen(str));
   printf("\nInverse string after:%s\n",str);
}

void swaping(char *a,char *b)
{
char temp=*a;
*a=*b;
*b=temp;
}
void InverseString(char s[],int len)
{
int i,k=-1,j;
i=j=0;

for (i=k+1;i<len;i++){
       j=len-i+k;
   if(i>=j) break;
   swaping(&s[i],&s[j]);
}
}

第2个回答  2013-12-01
好像你的输出有问题,如果没记错,字符的输出c语言里面只能用for循环一个一个字符输出吧。c++可以直接写字符数组名输出
第3个回答  2013-12-01
你先确定了长度

length=strlen(str);

再读入 scanf("%s",str);

很明显者两者对不上追问

修改之后还是有问题

追答

下面在你代码上修改好了,有几个小问题:

#include<stdio.h>
#include<string.h>
int main()
{
char str[100];
char opstr[100];
int length=0;
void op(char str[100],char opstr[100],int length);

printf("input string:\n");
scanf("%s",str);
length=strlen(str);//赋值移动到这里 
op(str,opstr,length);
printf("inverse string:%s\n",opstr);


return 0;
}
void op(char str[100],char opstr[100],int length)
{
int i=0;
for(i=0;i<length;i++)
{
opstr[i]=str[length-1-i];//需要再多减1 
}
opstr[i]='\0';//需要增加字符串结尾字符 
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网