反序输出,帮我看一下哪里不对阿

来源:百度知道 编辑:UC知道 时间:2024/06/25 07:03:35
输入一字符串,然后反序输出。。要求用函数编写代码,在主函数中输入输出。

#include "stdio.h"
#include"string.h"

void main()
{int fanxu(char b[50],int i);
int i;
char a[50];
scanf("%s",a);
i=strlen(a);
i=fanxu(a[50],i);
printf("%s\n",a);
printf("%d",i);
getch();}
int fanxu(char b[50],int i)
{int j;
char t;
for(j=0;i>j;j++,i--)
{t=b[j];b[j]=b[i];b[i]=t;}
return i;

第一,传递数组时应传递数组名,也就是地址,你的a[50]传递是元素,而实际上也没有这个元素
第二,i传递的长度,但是C中最大下标是长度-1
第三,我觉得你再返回输出i没有什么意义,不过这个无所谓,翻转字符串是重点
程序修改如下,编译通过

#include "stdio.h"
#include"string.h"

void main()
{
int fanxu(char b[50],int i);
int i;
char a[50];
scanf("%s",a);
i=strlen(a);
i=fanxu(a,i);
printf("%s\n",a);
printf("%d",i);
getch();}

int fanxu(char b[50],int i)
{int j;
char t;
i--;
for(j=0;i>j;j++,i--)
{t=b[j];b[j]=b[i];b[i]=t;}
return i;
}