#include<stdio.h>
#include<ctype.h>
void expend(char *,char *);
int main()
{
char a[]="-a-d-z00-9--------A-Z";
char b[200];
expend(a,b);
printf("%s",b);
return 0;
}
void expend(char a[] ,char b[]){
int i,j=0;
for(i=0;a[i]!='\0';i++)
{
if(a[i]=='-'&&i!=0) //这里判断是不是第一个如果是第一个的话前面就没有啥东西了 直接复制就ok了
{
if(isdigit(a[i-1])&&isdigit(a[i+1])) //这里判断是不是数字
{
for(int c=a[i-1]+1;c<a[i+1];b[j++]=c++); //这里就是赋值了
continue;
}else if(islower(a[i-1])&&islower(a[i+1])){ //这里判断是不是小写字母
for(int c=a[i-1]+1;c<a[i+1];b[j++]=c++);
continue;
}else if(isupper(a[i-1])&&isupper(a[i+1])){
/*
这里判断是不是大写字母 当然如果你要写成 (a[i-1]>='A'&&a[i-1]<='Z')&& (a[i+1]>='A'&&a[i+1]<='Z')
也是可以的你还可以把这个三个判断写成一个判断
我感觉那样子阅读性太差了
*/
for(int c=a[i-1]+1;c<a[i+1];b[j++]=c++);
continue;
}
}
b[j++]=a[i];
}
b[j]='\0';
}
编写函数 expand(s1, s2),将字符串 s1 中类似千 a•z 一类的速记符号 在字符串 s2 中扩展为等价的完整列表 abc…xyz。该函数可以处理大小写字母和数字,并可 以处理 a•b•c、a•z0•9 与•a•z
猜你喜欢
转载自www.cnblogs.com/my-study/p/12284105.html
今日推荐
周排行