中易网

c语言实现大写字符串转换成小写,代码有问题,求高手指点

答案:4  悬赏:50  
解决时间 2021-03-07 02:15
c语言实现大写字符串转换成小写,代码有问题,求高手指点
最佳答案
#include
#include
#include

char a[] = "aAd";
char *strlwrr(char *st);

void main()
{
strlwrr(a);
printf("%s", a);
system("pause");
}
char *strlwrr(char *st)
{
char ptr[5];
int i = 0;

strcpy(ptr,st);
//prt和st指不是同一空间
while (i<=5)
{
if((ptr[i] <= 'Z') && (ptr[i] >= 'A'))
st[i] = st[i] + 32;
i++;
}

return st;
}
全部回答
return st错误,没有返回ptr的值
应该是while(i<=2)
或者改成while(ptr[i]!='\0')
追问:不对。。打出来的仍然是奇怪的字符
你将你的字符串复制到ptr上然后再对ptr做修改当然不能达到目的了
因为你要改的是st然而你改的却是ptr
这里的ptr是你复制出来的并不是指向你的st
所以完全不用定义那ptr
#include "stdio.h"
char a[]="aAd";
char *strlwrr(char *st);
int main(void)
{
printf("%s\n",strlwrr(a));
return 0;
}
char *strlwrr(char *st)
{
int i=3;
while(i)
{
if(st[i]<='Z'&&st[i]>='A')
st[i]+=32;
i--;
}
return st;
}
这样就可以了追答
追问:你说的有道理,但是我把return st改成return ptr为什么还是不对呢?我有点糊涂了。。
追答:郁闷了,回答都被采纳了我竟然还能提交答案
好吧,首先你要看下你的ptr是在哪个函数里声明定义并使用的
对,是你的strlwrr函数里
当你退出该函数的时候该函数便已由系统释放掉
所以你返回的ptr的地址内容已经被释放了
所以你引用了一个非法的地址
当然没有作用
----------------------------------------------------------------------------------------------
还真能回复啊- -
补充一下:
事实上你这个程序不需要返回一个值的
因为你的a是全局变量
在主函数输出中使用printf("%s\n",a);就可以了
追问:哦!豁然开朗呐。。太谢谢了,你也是大神~可惜不能有两个满意答案。。
追答:我不是什么大神.............................................
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
哥俩好法式铁板烧地址在什么地方,想过去办事
打开我的电脑 属性 高级 启动和故障恢复 
只有低级思想的女人才会去干那种行业大家说对
菜溪便利店这个地址在什么地方,我要处理点事
上晚班,听什么歌,好呢,
松茸与土豆一起能吃嘛
听说灵羽秘匣还能够开出翅膀精华?
从LCCT怎么去KLIA啊?
诗歌汽车维修怎么去啊,有知道地址的么
不知道为啥我打开be_t365娱乐_场一打开电脑就
市场上纯藕粉多少钱一斤谁知道啊
时下最热门的免费网络游戏是什么?
哪里有批发二手手机的
洛基地板在什么地方啊,我要过去处理事情
山地车后拨短腿,中腿,长腿有何作用
推荐资讯
长安悦翔2012款用什么车载dvd导航一体机好
我这是什么脸
你好请问一下我的平安天下通为什麼收不到验证
计算:(1)2log525+3log264-8log71(2)1.10
杨受成睡过的男明星排行榜
租的房子的花洒的水龙头漏水,搞的热水器花洒
村里的土地可以随便卖吗
菌香园在哪里啊,我有事要去这个地方
如何辨别榆木家具是否贴面
跪求关于自信心的视频、电影或者广告
如何新建一个in文件
富虹国际饭店-健身房在什么地方啊,我要过去
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?