用C语言求解下列问题 5
用户从桌面输入任意多个字符,统计其个数,并将其中的小写字母转化为大写,大写字母和数字不变,其他字符过滤后输出并统计更改后有多少字母。例如我输入123abcABC!@#12...
用户从桌面输入任意多个字符,统计其个数,并将其中的小写字母转化为大写,大写字母和数字不变,其他字符过滤后输出并统计更改后有多少字母。例如我输入123abcABC!@#123输出应该为123ABCABC123,原输入15个,转换后12个。
展开
1个回答
展开全部
代码实现:输入不定长的字符串,对其做相应的处理。
运用malloc和realloc函数实现数组大小的动态分配。
测试平台:Devc++
输入123abcABC!@#123 输出123ABCABC123
输入123abcABC!@#123123123 输出123ABCABC123123123
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
typedef struct Text{
int a;
float b;
char c[10];
}text;
int main(){
char *p,ch;
int i=0,j;
p=(char *)malloc(1*sizeof(char));
p[0]='\0';
while((ch=getchar())!='\n'){
p=(char *)realloc(p,(i+2)*sizeof(char));
p[i]=ch;
i++;
p[i]='\0';
}
for(j=0;j<=i;j++){
if(p[j]<='z'&&'a'<=p[j])
printf("%c",p[j]-32);
else if(p[j]<='Z'&&'A'<=p[j])
printf("%c",p[j]);
else if(p[j]<='9'&&'1'<=p[j])
printf("%c",p[j]);
else
;
}
return 0;
}
追问
请问有没有简单一点的方法,malloc和realloc函数我没学过。我只是个初学者。
追答
限制于C语言,又要求动态数组。我目前没有见过更方便的方法了。
这两个函数百度一下查找怎么使用就可以了。
当然你可以定义个很大的数组,比如char a[100000000],可以放一亿个字符,这样来保证不会放不下(越界),也可以。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询