基础c , 数字和字母一起的排序怎么搞

在main函数中创建一个文件,将键盘输入的字符串(该字符串只包含数字、字母和)写入文件中。打开该文件,读出字符串。将字符串中的数字放到最前面,字母放到中间,号放到最后,并将形成的新串存放到另一个文件中。比如,aC12d3,经变换为,123aCd**。
求解

你自己先写写啊,有错误给修改一下......直接要作业,那悬个赏吧

可以用acii码吧,忘了怎么拼了,直接比较是可以的,你可以试试,a是64 0好像是40多,你看看

供参考:

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define  MaxLn 1024
void fw(char *str)
{
    FILE *fp;
    fp = fopen("tt.txt","w");
    if (fp == NULL){
        printf("File open fail!\n");
        return;
    }
    fputs(str,fp);
    fclose(fp);
}
void fr(char *buff)
{
    FILE *fp;
    fp = fopen("tt.txt","r");
    if (fp == NULL){
        printf("File open fail!\n");
        return;
    }
    fgets(buff, MaxLn,fp);
    fclose(fp);
}
void sort_alpha_digit(char *str)
{
    char tmp;
    int  i, j, len = strlen(str);
    for (i = len - 1;i > 0;i--){
         for (j = 0;j < i;j++){
             if (isalpha(str[j]) && isdigit(str[j+1])||
                 str[j] == '*'   && str[j+1] != '*')
             {
                 tmp=str[j];str[j]=str[j+1];str[j+1]=tmp;
             }
         }
    }
}
int main()
{
    char s[ MaxLn], buff[ MaxLn];
    scanf("%s", s);
    fw(s);
    fr(buff);
    sort_alpha_digit(buff);
    puts(buff);
    fw(buff);

    return 0;
}