永发信息网

一道c语言题目:编一个函数fun(char *s)把字符串中内容逆置,求教

答案:4  悬赏:60  手机版
解决时间 2021-03-13 01:12
#include <string.h>
#include <conio.h>
#include <stdio.h>
#define N 81
void fun(char*s)
{char *p=s;
char t[N];
int i=0,j=0;
while(p[i])i++;
i--;
while(i>=0)
t[j++]=p[i--];
t[j]=0;
s=t;
}
main()
{
char a[N];
FILE *out;
printf("Enter a string:");
gets(a);
printf("The original string is:");
puts(a);
fun(a);
printf("\n");
printf("The string after modified:");
puts(a);
strcpy(a,"Hello World!");
fun(a);

out=fopen("out.dat","w");
fprintf(out,"%s",a);
fclose(out);

}
fun内为我编写的,为什么fun处理之后输出还是原字符串?
最佳答案
循环变量的下限控制 上出来问题

举例 a[0] ~ a[5] 六个元素
a[0] a[5]交互
a[1] a[4]交互
a[2] a[3]交互
到这里就该结束了
如果继续
a[3] a[2]交互
.......
这样就把 倒过来的 又再倒回去了
全部回答
试试我的fun char len=0,temp,*q=p; while(*q) { q++; len++; } q--; len\=2; for(;len;len--) { temp=*p; *p=*q; *q=temp; }
局部变量t无法通过s=t的方式返回。 把s=t改成strcpy(s,t);
你原来的函数,处理一半是逆序,再继续处理,就又逆序回来了 void fun(char *s) { int len = 0, i = 0; char tmp; len = strlen(s); for(i = 0; i < (len - 1) / 2; i ++) { tmp = s[i]; s[i] = s[len - 1 - i]; s[len - 1 - i] = s[i]; } return; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
陈立华农资门市部我想知道这个在什么地方
信贷活动产生的基础是什么?这对于今天的经济
一个季度几个月?
青丘狐恒娘系列里面黄鼠狼精是谁演的
在张掖开什么店比较火
为什么说女人比男人要专一?从生理角度看?
做披萨需要什么材料
石家庄六院妇幼保健院建卡需要多少钱
台州欣荣鞋材科技股份有限公司怎么去啊,有知
太白山大爷海什么不能游泳
2002年一个日本连载漫画
惠普p1100打印机有实盘如何安装
老人死后安葬费前妻可以领取吗,老人写有遗嘱
形钟山隧道在什么地方啊,我要过去处理事情
英雄王和大魂链冲突吗
推荐资讯
发动机转速不够怎么办啊,可以修吗?
绿音阁酒店这个地址在什么地方,我要处理点事
保山市隆阳区河图镇河村村卫生室怎么去啊,有
岳麓山书院门票学生票多少钱?爬岳麓山不做索
楞严咒能放在车里吗
全身体格检查和局部体格检查有什么区别?
刘叉叉真名叫什么
怎样才能真正养好皮肤?
宝康药店在什么地方啊,我要过去处理事情
世纪星幼儿园这个地址在什么地方,我要处理点
八字算命中,日主临冠带是主什么阿?
商业城超市滨河店怎么去啊,有知道地址的么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?