C语言编程题,求编写一个函数,实现字符串逆置?

编写函数reverse,实现将一个字符串逆置。注意:请填写下面函数的{ }部分。
#include<string.h>
void reverse(char *x)
{

}
main()
{
char p[]="hello";
reverse(p);
puts(p);
}

#include <stdio.h>

#include <string.h>

void reverse(char *x)

{

char c;

int a=0,b=strlen(x)-1;

for(;a<b;a++,b--)

{

c=x[a];

x[a]=x[b];

x[b]=c;

}

}

int main()

{

char s1[]="",s2[]="a";

char s3[]="sd",s4[]="dfg";

reverse(s1);

reverse(s2);

reverse(s3);

reverse(s4);

printf("%s\n%s\n",s1,s2);

printf("%s\n%s\n",s3,s4);

return 0;

}

代码

输出

追问

我这道题是填空题,填写函数部分。

追答

整个代码都给你了,复制你需要的部分不就行了吗?复制5-12行就行了。

此外,你的main函数是有问题的,p指向了一个位于只读存储区的字符串,是不能通过p修改这个字符串的。

应将p定义成数组而不是指针。

追问

题目出错了,题目改一下
#include
void reverse(char *x)
{

}
main()
{
char p[]="hello";
reverse(p);
puts(p);
}

追答

改后就对了。改后还可以用我提供的代码。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-21

这个算法 你试试

追问

有错,算不出来。

追答

我觉得是题出的有问题,我反复试了下。
下面的代码可以。
#include "malloc.h"
#include "string.h"

void reverse(char **x)
{
char *tmp;
char *tTmp;
char *s;
s = *x;
int len = strlen(*x);
tTmp = tmp = (char *)malloc((len + 1) * sizeof(char));
while (*s != 0)
{
s++;
}
s--;
while (s >= *x)
{
*tTmp = *s;
s--;
tTmp++;
}
*tTmp = 0;
*x = tmp;
}

int _tmain(int argc, _TCHAR* argv[])
{
char *x = "Hello";
reverse(&x);
printf("%s", x);
return 0;
}

追问

题目出错了,题目改一下
#include
void reverse(char *x)
{

}
main()
{
char p[]="hello";
reverse(p);
puts(p);
}

追答

这样就简单了。

void reverse(char *x)
{
char tmp;
char *s;
s = x;
while (s != 0)
{
s++;
}
s--;
while (s >= x)
{
tTmp = *s;
*s = *x;
*x = tTmp;

s++;
x--;
}
}