/* Exercise 3.3 from "The C programming language" book by K&R */
#include <stdio.h>
/* unwrap shortcut sequence in s1[] to full sequence in s2[] */
void expand(char s1[], char s2[])
{
int i, j, k;
k = 0;
for (i = 0; s1[i] != '\0'; i++)
if (s1[i] == '-')
if (i == 0 || s1[i+1] == '\0')
s2[k++] = '-';
else
for (j = s1[i-1]; j <= s1[i+1]; j++)
s2[k++] = j;
s2[k] = '\0';
}
int main(void)
{
char s1[] = "-a-z0-9d-f-";
char s2[128] = "";
expand(s1, s2);
printf("s1=%s\ns2=%s\n", s1, s2);
return 0;
}
----------