https://medium.com/@theodoretsori/take-control-of-your-output-a-step-by-step-guide-to-creating-printf-in-c-4c8bea8c4ada