新手求助 关于C语言的题目 求各位大神解答

题目:编写函数,对一个字符串提取其中的英文字母,去掉其他的字符。然后全部改成小写程序:#include<stdio.h>char*change(char*a){charb... 题目:编写函数,对一个字符串提取其中的英文字母,去掉其他的字符。然后全部
改成小写
程序:
#include <stdio.h>
char *change(char *a)
{
char b[100],m;
int i,j=0,t;

for(i=0;*(a+i)!='\0';i++)
if(*(a+i)>='a'&&*(a+i)<='z'||*(a+i)>='A'&&*(a+i)<='Z')
{
*(b+j)=*(a+i);
j++;
}
*(b+j)='\0';
for(i=0;*(b+i)!='\0';i++)
if(*(b+i)>='A'&&*(b+i)<='Z')
*(b+i)+=32;
return b;
}
int main ()
{
char a[100],*c;
gets(a);
c=change(a);
puts(c);

}
为什么总是不行 求各位大神帮帮忙
展开
 我来答
炜炜ing
2014-12-18 · TA获得超过114个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:61.2万
展开全部

函数里生成的数组会在函数调用结束后自动释放,所以你在change函数里生成的b[100],在调用完change后就没了


这就需要用到动态数组了


增加库

#include "stdlib.h"
把原来的char b[100],m;替换为
char *b = (char*)malloc(100 * sizeof(char));

这样就好了
U200814342
2014-12-18 · TA获得超过290个赞
知道小有建树答主
回答量:374
采纳率:0%
帮助的人:159万
展开全部
因为b[100]是临时变量,函数调用结束之后就销毁了,你返回一个b是没有用的,可以直接使用a就行,
经过调试结果为:
输入aasdf46546EFGG13324
输出aasdfefgg
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式