Mostly just one-off errors....
Code:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define NAX 81
void Free( void *ptr )
{
if(ptr != NULL) free(ptr);
}
typedef struct stack
{
char *array;
int size;
int top;
}STACK;
STACK *S;
STACK *StackCreate(int nSize);
void StackDestr(STACK *S);
char StackPush(STACK *S, char Value);
char StackPop(STACK *S);
int StackIsFull(STACK *S);
int StackIsEmpty(STACK *S);
int StackCount(STACK *S);
int main (void)
{
char line[NAX-1], revline[NAX-1];
int p, i, ch;
StackCreate(NAX);
printf("Enter a line to be reversed: \n");
fgets(line, NAX-1, stdin);
for (p=0; p < strlen(line); p++)
{
StackPush(S, line[p]);
}
printf("# Of Chars: %i\n", StackCount(S));
for (i=0; i < strlen(line); i++)
{
revline[i] = StackPop(S);
}
revline[i] = '\0';
printf("Line Output: %s\n", revline);
getch();
return 0;
}
STACK *StackCreate(int nSize)
{
int k;
S = (STACK *)malloc(sizeof(STACK));
if (S == NULL) {perror("reversChar"); exit(1);}
S->array = (char *)malloc(nSize*sizeof(char));
if (S->array == NULL) { perror("reversChar"); exit(1);}
S->size = nSize;
S->top = 0;
for (k=0; k<S->size; k++)
S->array[k] = 0;
return S;
}
void StackDestr(STACK *S)
{
Free(S->array);
Free(S);
return;
}
char StackPush(STACK *S, char Value)
{
if (StackIsFull(S))
{
puts("No room in Stack");
return 0;
}
S->array[S->top] = Value;
S->top = 1 + S->top;
return Value;
}
char StackPop(STACK *S)
{
if(StackIsEmpty(S))return 0;
char firstchar;
S->top--;
firstchar = S->array[S->top];
S->array[S->top] = 0;
return firstchar;
}
int StackIsFull(STACK *S)
{
if (S->top >= S->size - 1)
return 1;
else
return 0;
}
int StackIsEmpty(STACK *S)
{
if (S->top <= 0)
return 1;
else
return 0;
}
int StackCount(STACK *S)
{
return S->top-1;
}