c语言:把字符串中的内容逆置。这程序哪有错?

请编一个函数fun(char*s),函数的功能是把字符串中的内容逆置。例如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcba。#incl... 请编一个函数fun(char *s),函数的功能是把字符串中的内容逆置。例如:字符串中原有的内容为:
abcdefg,则调用该函数后,串中的内容为:gfedcba。

#include<stdio.h>
#include<string.h>
char fun(char *s)
{
char *ns=0;
int len=0,j,i;
j=strlen(s);
for(i=0;j>=0;j--,i++)
*(ns+i)=*(s+j);
return(*ns);
}
void main()
{
char a[5];
gets(a);
printf("%s\n",fun(a));
}
展开
 我来答
编程知识分享家
2013-05-29 · 编程、数据库入门。计算机技巧、心得分享。
编程知识分享家
采纳数:404 获赞数:923

向TA提问 私信TA
展开全部
最核心的问题,逆置要有交换算法的应用,你枯山未用。液掘
另外,既然是对换,那有个一半就行闹败核了。
int len=0,j,i;
j=strlen(s);
for(i=0;i<j/2;j++)
{
t=s[i];
s[i]=s[j-i-1];
s[j-i-1]=t;
}
}
强烈建议用数组形式表示,少用指针。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
VanEclipse
2013-05-28 · 超过51用户采纳过TA的回答
知道小有建树答主
回答量:95
采纳率:0%
帮助的人:125万
展开全部
问题好几个,基于你的代码进行敏州老了修改如下:迹凳
#include<stdio.h>
#include<string.h>
void fun(char *s)
{
int i,j,t;
j=strlen(s);
for(i=0;j>i;j--,i++){
t= *(s+i);
*(s+i) 桥升= *(s+j-1);
*(s+j-1)= t;
}
}
void main()
{
char a[5];
gets(a);
fun(a);
printf("%s\n",a);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
IT孤鹜
推荐于2016-05-30 · TA获得超过4197个赞
知道大有可为答主
回答量:3960
采纳率:71%
帮助的人:3561万
展开全部
//问题还真多
第一: *(s+j-1)才是蔽仿指向最后一个字符
第二: 返回的是亮并笑字符串型,就是指针了,函数里面要开辟内存敬含空间

#include<stdio.h>
#include<malloc.h>
#include<string.h>
char* fun(char *s)
{
char *ns;
ns=(char*)malloc(sizeof(char)*20);
int len=0,j,i;
j=strlen(s);
for(i=0;j>=0;j--,i++)
*(ns+i)=*(s+j-1);
*(ns+i-1)='\0';
return ns;
}
void main()
{
char a[10];
gets(a);
printf("%s\n",fun(a));
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-05-28
展开全部
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式