练习3-3:编写函数expand(s1, s2),将字符串s1中类似于a-z一类的速记符号在字符串s2中扩展为等价的完整列表abc...xyz。该函数可以处理大小写字母和数字,并可以处理a-b-c、a-z0-9与-a-z等类似的情况。作为前导和尾随的-字符原样打印。
/* 编程思路:字符串s1中,如果s1[i]比s1[i+2]小而且s1[s1+1]为-, 则将值s1[i]到s1[s1+2]之间的 值复制到s2中,否则直接复制s1[i]到到s2 */ #include <stdio.h> void expand(char s1[],char s2[]); int main(int argc, char *argv[]) { char s1[500]="-a-z\nA-Z-0-9"; char s2[1000]; expand(s1,s2); printf("%s\n",s2); return 0; } void expand(char s1[],char s2[]) { char c; int i,j; j=0; for(i=0;s1[i]!='\0';i++) { if(s1[i]<s1[i+2]&&s1[i+1]=='-') { c=s1[i]; while(c<=s1[i+2]) { s2[j++]=c; c++; } i=i+2; } else { s2[j++]=s1[i]; } } s2[j]='\0'; }
程序执行效果: