编写expand(s1,s2)
编写expand(s1,s2),将字符串s1中类似于a-z类的速记符号在字符串s2中扩展为等价的完整列表abc.....xyz。该函数可以处理大小写字母和数字,并可以处理a-b-c,a-z0-9和-a-z等类似的情况。作为前导和尾随的-字符原样排印。
#include <stdio.h>
#include <string.h>
char *expand(char s1[], char s2[]);
int main()
{
char str1[80];
char str2[80];
gets(str1);
printf("%s\n", str1);
printf("%s\n", expand(str1, str2));
return 0;
}
char *expand(char s1[], char s2[])
{
int i, j, c1, c2;
i = 0;
j = 0;
if(s1[i] != '-')
c1 = s1[i];
else
{
s2[j++] = s1[i]; // 如果第一字符是‘-’,赋值给s2[j]
++i;
c1 = s1[i];
}
while(s1[i++] != '\0')
{
if(i == 25 || i == 9) //考虑 这种情况 a-z0-9
{
while(c1 <= 'z') // 将a—z 存放到 s2[j]中 同时将 c1 赋值 0
{
s2[j++] = c1;
++c1;
}
++i;
c1 = s1[i];
}
}
--i;
c2 = s1[i];
while(c1 <= c2)
{
s2[j++] = c1;
++c1;
}
s2[j] = '\0';
return s2;
}