C语言初学者求助 字符串倒置运行后出现乱码

#include<stdio.h>#defineN20voidfun(charc[],intn)//倒置字符串的函数{inti,j,k,t;t=n/2;k=2*t;cha... #include<stdio.h>
#define N 20
void fun(char c[],int n)//倒置字符串的函数
{
int i,j,k,t;
t=n/2;
k=2*t;
char c2[N];
for(i=0;i<=t;i++)
{
c2[i]=c[i];
c[i]=c[n-1-i];
}
for(i=n/2;i<=n;i++)
c[i]=c2[k-i];

}
char lenth(char c[])//求字符串长度
{
int i;
for(i=0;c[i]!=0;i++)
;
return i;
}
main()
{
char c[N];
int k;
scanf("%s",c);
k=lenth(c);
fun(c,k);
printf("%s",c);
}
展开
 我来答
Alan_Turing__
2014-01-19 · TA获得超过1201个赞
知道小有建树答主
回答量:369
采纳率:0%
帮助的人:418万
展开全部
#include<stdio.h>
#define N 20
void fun(char c[],int n)//倒置字符串的函数
{
int i,j;//还是那句话,尽量少使用变量
char temp;//用于调换的中间变量
for(i=0;i<n/2;i++)
{
   temp=c[i];
   c[i]=c[n-1-i];
   c[n-1-i]=temp;
}


int lenth(char c[])//函数的返回类型应该为int//其实此处的函数都是多余的,c提供了计算字符串长度的函数在头文件#include<string.h>中,原型为strlen(数组)
{
int i;
for(i=0;c[i]!=0;i++)//此处应为c[i]!='\0'
    i++;
return i;
}
main()
{
char c[N];
//int k;//程序多设置一个变量就会多占用内存,此处不必要
scanf("%s",c);
//k=lenth(c);
fun(c,lenth(c));
printf("%s",c);
}

//这是我的例子
#include<stdio.h>
#include<string.h>
#define N 20
void fun(char c[],int n)//倒置字符串的函数
{
int i,j;
char temp;
for(i=0;i<n/2;i++)
{
   temp=c[i];
   c[i]=c[n-1-i];
   c[n-1-i]=temp;
}


int main(void)
{
char c[N];
scanf("%s",c);
fun(c,strlen(c));
printf("%s",c);
return 0;
}
albumin
2014-01-19 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2419万
展开全部
测试长度时,都知道字符串是用'\0'结束的,在fun函数末尾加上c[n]='\0',让最后一个字符表示字符串的结束
void fun(char c[],int n)//倒置字符串的函数
{
int i,j;
char t;
for(i=0,j=n-1;i<j;i++,j--)
{
t=c[i];
c[i]=c[j];
c[j]=t;
}
c[n]='\0';
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
狂神天宇
2014-01-19 · TA获得超过4217个赞
知道小有建树答主
回答量:828
采纳率:0%
帮助的人:808万
展开全部
在fun函数最后加一个c[i]='\0';
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式