C语言 函数调用, 输入字符串,逆序输出

下面是函数调用的被调函数,实现逆序排列;
为什么是错的呢

void fun(char *str)
{
char ss[128];
int i, j = 0;

for (i = strlen(str) - 1, j = 0; i >= 0; i--)
{
ss[j] = str[i];
j++;
}
strcpy(ss, str);//这里错了吗.该怎么样写呢
}

void fun(char *str)
{
char ss[128]={0}; //<<<补一下初始化或在下面补一个结束
int i, j = 0;
for (i = strlen(str) - 1, j = 0; i >= 0; i--)
{
ss[j] = str[i];
j++;
}//****新串没有结束!!!
ss[j] = '\0';//<<<补在这里,或在开始时把ss全置为0
strcpy(str, ss);//复制到原串中,前面是目标(会被改写),第二参数是来源,没有初始化之前这里会读ss越界引起崩溃
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-05-06
void fun(char *str)
{
char ss[128];
int i, j = 0;

for (i = strlen(str)-1 , j = 0; i >= 0; i--)
{
ss[j] = str[i];
j++;
}
ss[j]='\0'; //结束字符串
strcpy(str, ss);//前面的参数是目标 strcpy(目标,源),你写反了
}本回答被提问者和网友采纳
第2个回答  2012-01-02
for (i = strlen(str) - 1, j = 0; i >= 0; i--)
{
ss[j] = str[i];
j++;
}
楼主,这个循环已经给ss[]赋值了,就是str的逆序,,
但你下面有用strcpy()把原来的str拷贝到ss里去了,,相当于没变。。
这是我的想法,,暂时边上没工具 不知道到底错哪儿了 楼主试试吧。。
相似回答