diff --git a/stack.c b/stack.c
index 222323ad858553aa6c7aff4e90fd664a9712fb85..efeb060c6d3c922200fb3c3508b26ad33ca804ad 100644
--- a/stack.c
+++ b/stack.c
@@ -17,6 +17,20 @@ void stack_peek(stack s, int *value){
     }
 }
 
+void stack_print(const stack s) {
+	//TODO: replace if statement with following as soon as relevant function is implemented
+	//if (!stack_is_empty()) {
+	if (s.top >= 0) {
+		printf("          TOP\n--------------------\n");
+		for (int* spot = s.data + s.top; spot >= s.data; --spot) {
+			printf("%8d |  %12d\n", spot - s.data, *spot);
+		}
+		printf("--------------------\n          BOTTOM\n");
+	} else {
+		printf("STACK EMPTY\n");
+	}
+}
+
 void stack_clone(stack s, stack *clone) {
     clone->top = s.top;
     clone->capacity = s.capacity;
@@ -24,4 +38,5 @@ void stack_clone(stack s, stack *clone) {
     for (int i = 0; i <= s.top && i < s.capacity; i++) {
         clone->data[i] = s.data[i];
     }
-}
\ No newline at end of file
+}
+
diff --git a/stack.h b/stack.h
index f1bd309920ef229aa8ab3b15325938e0102ff80f..66056e2b928af4f82d1e7dab3c3e397ca0dc9047 100644
--- a/stack.h
+++ b/stack.h
@@ -12,4 +12,6 @@ void stack_init(stack *stack);
 void stack_peek(stack s, int *value);
 void stack_clone(stack s, stack *clone);
 
+void stack_print(const stack s);
+
 #endif