There is no logical issue to what you are doing, as indeed that is a stack and does what a stack needs to do.
One thing you may want to consider though is that ana fixed size array is typically not the manner in which stacks are implemented. For as to why, consider the case where your stack is full and you want to push more things too it. A costly solution would by to allocate a new array of greater size, and copy all values over. Moreover, what if all elements of the stack are popped off after allocating a huge space for it? The array is still allocated in full in memory.
To avoid these problem, a Linked List is generally used instead. It allows for removals and insertions from the front and back in constant time, and is only as large as necessary. Link Lists also make a good project in general when learning C.