数据结构 栈的基本运算

问题遇到的现象和发生背景

已知当前需要定义一个顺序栈结构对一组字符型数据(A、B、C、D、E、F、G、H、I、J、K、H、I)进行操作(假设当前定义的数据结构最多能存放100个数据)。现要求编写一个程序对这些数据进行以下操作:
A. 对所有数据进行入栈操作;
B. 对所有数据进行出栈操作,并输出每次出栈结点的值;
提示:
该题采用顺序栈的方法进行数据操作,首先定义一个字符型数组,该数组的大小为当前数据结构能够存放的最大元素个数(假设最大空间为100)。然后初始化一个空的顺序栈(调用init函数),根据题目要求,进行入栈操作(调用push函数),直到所有值全部入栈为止。然后输出栈顶结点的值(调用read函数),然后进行出栈操作(调用pop函数),直到所有的结点全部出栈为止。

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法

输入格式:
输入一组字符型数据。

输出格式:
依次输出出栈的元素。(注意:输出出栈元素时,每个元素后面有一个空格)

我想要达到的结果

输入样例:
ABCDEFGHIJKHI#
输出样例:
注意:输出出栈元素时,每个元素后面有一个空格

I H K J I H G F E D C B A

写了主要的压栈、出栈的代码,其他的可以参考实现。


#include <stdio.h>

typedef struct
{
    char dat[100];
    int pointer;
} Stack;

int pop(Stack *stp)
{
    char rtn;
    if(stp->pointer != 0)
    {
        rtn = stp->dat[stp->pointer];
        stp->pointer--;
    }
    else
        rtn=-1;
    return rtn;
}

int push(char dat,Stack *stp)
{
    stp->pointer++;
    stp->dat[stp->pointer]=dat;

}

int main()
{
    Stack sta= {{0},0};
    char c;
    while((c=getchar())!='#')
    {
        push(c,&sta);
    }
    while((c=pop(&sta))!=-1)
    {
        printf("%c ",c);
    }

}


img