Pessoal fiz um programinha com a estrutura de Pilhas, uma calculadora que dentre dela tem varias funçoes. Por exemplo função Fatorial de um numero. Gostaria de saber como faço para chamar a função fatorial dentro do case.  Olhem só o programa:   #include <stdio.h> #include <stdlib.h> #include<math.h> #define MAX 100  int *p; /* apontar para uma regiao de memoria livre */ int *tos; /* aponta para o topo da pilha */ int *bos; /* aponta para o fundo da pilha */   int fat,n; int *d;   void push(float i); float pop(void);  int main(void){ int i,fat=1,n; float a, b; char s[80]; p = (int *) malloc(MAX*sizeof(int)); /*obtem memoria da pilha*/ if(!p) { printf("falha de alocacao\n"); exit(1); } tos = p; // recebe endereco do topo da pilha bos = p+MAX-1; // recebe endereco do fundo da pilha  printf("Opcoes da CALCULADORA: \n\n"); printf("#########################\n#\t\t\t#\n# + -> para soma\t#\n# "); printf("- -> subtracao\t#\n# "); printf("* -> multiplicacao\t#\n# "); printf("/ -> divisao\t\t#\n#"); printf(" r -> Raiz Quadrada\t#\n#"); printf(" p -> X elevado a Y\t#\n#"); printf(" f -> Fatorial de X \t#\n#"); printf("'s'-> para sair\t#\n#"); printf("\t\t\t#\n#########################\n\n");  printf("\nDigite alguma operacao");  do { printf(": "); gets(s); switch(*s) {             case '+':            a = pop();            b = pop();            printf("%f\n", a+B);            push(a+B);break;             case '-':            a = pop();            b = pop();            printf("%f\n", b-a);            push(b-a);break;             case '*':            a = pop();            b = pop();            printf("%f\n", b*a);            push(b*a);break;             case '/':            a = pop();            b = pop();            if(a==0) {            printf("divisao por 0\n");break;            }            printf("%f\n", b/a);            push(b/a);break;          case '.': /* mostra o conteudo do topo da pilha */        a = pop();        push(a);        printf("O valor atual no topo da pilha ‚: %f\n", a);break;         case 'r':        a=pop();        printf("Raiz quadrada : %f\n",pow(a,1/2.0));        push(pow(a,1/2.0));break;         case 'p':        a=pop();        b=pop();        printf("Potencia : %f\n",pow(a,B));        push(pow(a,B));break;         case 'f':        a=pop();        printf("Fatorial : %f\n", a=fat);        push(fat);break;         default:        push(atoi(s)); }  } while(*s!='s'); } /* poe um elemento na pilha */ void push(float i){      if(p>bos)      {               printf("Pilha cheia\n");               return; }      *p = i;     p++; }  /* Recupera o elemento do topo da pilha */ float pop(void){       p--;       if(p<tos) {       printf("Pilha vazia\n");       return 0; }       return *p; }  /* Função Fatorial da pilha */ int fat(int n){     int f=1;     while(n!=0){                 f*=n;                 n--;                 }return f; }