下面这个程序有两个错误分别在哪里啊?求速度大神指导,着急啊!!!!!谢谢!
#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 展开
#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 展开
展开全部
有点不能明白第一个for循环的意义
把found部分换成下面这个就行了:
for (i=0; i<sl; i++)
t[i] = s[sl-i-1];
问题有两个:
不需要先把s的字符先复制到t,因为后面的操作又把字符重新替换了。
第二个for循环中,你只要把i的值带进去试一试就知道问题了,例如s等于"abcde"那么t的结果就是"abcdeedcba",随后你在第5位写入'\0'结束符,结果t就只剩下"abcde"了。
追问
那输入12345输出来是1234554321怎么改?
追答
刚才完善的刚好把你的追问回答了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询