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);
} 展开
#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);
} 展开
3个回答
展开全部
#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;
}
展开全部
测试长度时,都知道字符串是用'\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';
}
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';
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在fun函数最后加一个c[i]='\0';
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询