From 6963440e9f6435f396c4a9da5812322e6101b8bb Mon Sep 17 00:00:00 2001 From: ALittlePatate Date: Sat, 5 Aug 2023 20:08:47 +0200 Subject: [PATCH] changes to put api --- src/api.c | 20 +++++++++++++++++++- src/main.c | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/api.c b/src/api.c index 3251110..4523802 100644 --- a/src/api.c +++ b/src/api.c @@ -1,12 +1,30 @@ #include "api.h" #include "main.h" +#include "instructions.h" #ifdef _WIN32 //windows only apis #include #endif +#define CHECK_STACK(X) \ + if (X < 0) return; \ + if (X > STACK_SIZE) return; \ + void api_put() { - printf("%c", stack[top--]); + int mode = stack[top--]; // 1 for char, 2 for num + if (mode != 1 && mode != 2) return; + + CHECK_STACK(top); + + if (mode == 1) { + char c = stack[top--]; + if (c == '\0') c = ' '; + + printf("%c", c); + } + else { + printf("%d", stack[top--]); + } } void api_getasynckeystate() { diff --git a/src/main.c b/src/main.c index d6f8197..47c1eaf 100644 --- a/src/main.c +++ b/src/main.c @@ -164,7 +164,7 @@ int main(int argc, char** argv) { free(args); fclose(fptr); - printf("Program finished, states :\n"); + printf("\n\nProgram finished, states :\n"); printf("Stack : "); for (int i = 0; i < STACK_SIZE; i++) {