请问这道c语言函数问题怎么做?

输入一个字符串,字符串仅包含三个字符,首尾字符仅为大写字母或小写字母或数字,中间字符为“减号”符,用指针操作字符串,将其中的首尾字符展开形成字符串。即将其中形如“a-f”、“A-D”、“3-8”的形式展开成“abcdef”、“ABCD”、“345678”,若出现诸如“A-9”、“f-a”(不符合ASCII顺序)、“B-f”(大小写不能混)等形式则提示字符串不合理,无法展开。

#include <stdio.h>
#include <malloc.h>


int main()
{
    char *in = (char *)malloc(sizeof(char)*4);
    int i;
    for(i=0;i<3;i++)
        in[i] = getchar();
    in[i] = '\0';

    int a,b,d,flag;
    a = in[0];
    b = in[2];
    d = b - a;
    flag = 0;
    if((a >= 'A' && a <= 'Z') && (b >= 'A' && b <= 'Z'))
    {
        if(d > 1)
            flag = 1;
    }
    else if((a >= 'a' && a <= 'z') && (b >= 'a' && b <= 'z'))
    {
        if(d > 1)
            flag = 1;
    }
    else if((a >= '0' && a <= '9') && (b >= '0' && b <= '9'))
        if(d > 1)
            flag = 1;
    if(flag)
    {
        char *out = (char *)malloc(sizeof(char)*(d+2));
        for(i=0;i<(d+1);i++)
            out[i] = a+i;
        out[i] = '\0';

        printf("Output:%s\n",out);
    }
    else
    {
        printf("Input error!!!!\n");
    }
    return 0;
}