下面这个程序有两个错误分别在哪里啊?求速度大神指导,着急啊!!!!!谢谢!

#include<stdio.h>#include<string.h>voidfun(char*s,char*t){inti,sl;sl=strlen(s);/*****... #include <stdio.h>
#include <string.h>
void fun (char *s, char *t)
{ int i, sl;
sl = strlen(s);
/************found************/
for( i=0; i<=sl; i ++)
t[i] = s[i];
for (i=0; i<sl; i++)
t[sl+i] = s[sl-i-1];
/************found************/
t[sl] = '\0';
}

main()
{ char s[100], t[100];
printf("\nPlease enter string s:");
scanf("%s", s);
fun(s, t);
printf("The result is: %s\n", t);
}
例如输入一串字符abcde那么输出的结果为edcba
展开
 我来答
kaneorotar
2012-10-15 · TA获得超过171个赞
知道小有建树答主
回答量:98
采纳率:100%
帮助的人:151万
展开全部

有点不能明白第一个for循环的意义

把found部分换成下面这个就行了:

for (i=0; i<sl; i++)

t[i] = s[sl-i-1]; 


问题有两个:

  1. 不需要先把s的字符先复制到t,因为后面的操作又把字符重新替换了。

  2. 第二个for循环中,你只要把i的值带进去试一试就知道问题了,例如s等于"abcde"那么t的结果就是"abcdeedcba",随后你在第5位写入'\0'结束符,结果t就只剩下"abcde"了。

追问
那输入12345输出来是1234554321怎么改?
追答
刚才完善的刚好把你的追问回答了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式