Другие языки программирования и технологии

Помогите Написать програмку на си ) Плиииз)

Имеется строка содержащая буквы и цифры .Преобразуйте эту строку так, что бы в ней сначала шли все цифры исходной строки, а потом все буквы исходной строки, но в обратном порядке.
Допустимые символы - цифры, прописные и строчные латинские буквы.
Пример :
Исходная строка результат
ad2e57b6 2576beda
Стрижем. Kozloff. Недопустимый символ - "."
Держите:

$ cat trah.c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

struct node {
  int data;
  struct node *next;
} *digits = NULL, *letters = NULL;

int main() {
  int c;
  struct node *p, *q;
  while ((c = getchar()) != EOF) {
    if (isdigit(c)) {
      p = (struct node *)malloc(sizeof *digits);
      if (p) {
        p->data = c;
        p->next = NULL;
        if (!digits)
          digits = p;
        else {
          for (q = digits; q && q->next; q = q->next);
          q->next = p;
        }
      }
      else {
        printf("Error add digit.\n");
        exit(1);
      }
    }
    else if (isalpha(c)) {
      p = (struct node *)malloc(sizeof *letters);
      if (p) {
        p->data = c;
        p->next = letters;
        letters = p;
      }
      else {
        printf("Error add letter.\n");
        exit(1);
      }
    }
    else {
      /* do nothing */
    }
  }
  for (p = digits; p; p = p->next)
    printf("%c", p->data);
  for (p = letters; p; p = p->next)
    printf("%c", p->data);
  printf("\n");
  return 0;
}

Сборка:

$ clang trah.c -o trah

Проверка:

$ echo ad2e57b6 | ./trah
2576beda
Emil Sariyev
Emil Sariyev
79 098
Лучший ответ
Сергей Начина $ cat trah.c не подскажите что это значит? Компилятор на него ругается! ,без него запускается, и при вводе строки, ничего не выводит !
Просто сортируем с проверкой и все. Что не получается-то?
Илья Анохин
Илья Анохин
2 451