Something went wrong. Try again.
42 project to recreate printf
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274// #include "ft_printf.h"// #include <stdio.h>// #include <limits.h>
// int main(void)// {// int ft;// int og;
// // Basic specifiers// ft = ft_printf("char: %c\n", 'A');// og = printf("char: %c\n", 'A');// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("string: %s\n", "hello");// og = printf("string: %s\n", "hello");// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("int: %d\n", 42);// og = printf("int: %d\n", 42);// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("int: %i\n", 42);// og = printf("int: %i\n", 42);// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("unsigned: %u\n", 42u);// og = printf("unsigned: %u\n", 42u);// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("hex lower: %x\n", 255);// og = printf("hex lower: %x\n", 255);// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("hex upper: %X\n", 255);// og = printf("hex upper: %X\n", 255);// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("percent: %%\n");// og = printf("percent: %%\n");// ft_printf("ft:%d og:%d\n\n", ft, og);
// // Pointer// int x = 42;// ft = ft_printf("pointer: %p\n", &x);// og = printf("pointer: %p\n", &x);// ft_printf("ft:%d og:%d\n\n", ft, og);
// // Edge cases - numbers// ft = ft_printf("zero: %d\n", 0);// og = printf("zero: %d\n", 0);// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("negative: %d\n", -42);// og = printf("negative: %d\n", -42);// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("INT_MAX: %d\n", INT_MAX);// og = printf("INT_MAX: %d\n", INT_MAX);// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("INT_MIN: %d\n", INT_MIN);// og = printf("INT_MIN: %d\n", INT_MIN);// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("UINT_MAX: %u\n", UINT_MAX);// og = printf("UINT_MAX: %u\n", UINT_MAX);// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("negative as unsigned: %u\n", -1);// og = printf("negative as unsigned: %u\n", -1);// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("hex zero: %x\n", 0);// og = printf("hex zero: %x\n", 0);// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("hex UINT_MAX lower: %x\n", UINT_MAX);// og = printf("hex UINT_MAX lower: %x\n", UINT_MAX);// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("hex UINT_MAX upper: %X\n", UINT_MAX);// og = printf("hex UINT_MAX upper: %X\n", UINT_MAX);// ft_printf("ft:%d og:%d\n\n", ft, og);
// // Edge cases - strings// ft = ft_printf("empty string: %s\n", "");// og = printf("empty string: %s\n", "");// ft_printf("ft:%d og:%d\n\n", ft, og);
// // Edge cases - pointers// ft = ft_printf("null pointer: %p\n", (void *)NULL);// og = printf("null pointer: %p\n", (void *)NULL);// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("ULONG_MAX pointer: %p\n", (void *)ULONG_MAX);// og = printf("ULONG_MAX pointer: %p\n", (void *)ULONG_MAX);// ft_printf("ft:%d og:%d\n\n", ft, og);
// // Edge cases - format string structure// ft = ft_printf("\n");// og = printf("\n");// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("percent at end: %%\n");// og = printf("percent at end: %%\n");// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("100%%done %d\n", 42);// og = printf("100%%done %d\n", 42);// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("%d%%\n", 100);// og = printf("%d%%\n", 100);// ft_printf("ft:%d og:%d\n\n", ft, og);
// // Multiple and consecutive specifiers// ft = ft_printf("multi: %d %s %c %x\n", 42, "hi", 'Z', 255);// og = printf("multi: %d %s %c %x\n", 42, "hi", 'Z', 255);// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("consecutive: %d%d%d\n", 1, 2, 3);// og = printf("consecutive: %d%d%d\n", 1, 2, 3);// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("%d is the answer\n", 42);// og = printf("%d is the answer\n", 42);// ft_printf("ft:%d og:%d\n\n", ft, og);
// ft = ft_printf("the answer is %d\n", 42);// og = printf("the answer is %d\n", 42);// ft_printf("ft:%d og:%d\n\n", ft, og);
// return (0);// }
#include "ft_printf.h"#include <stdio.h>#include <limits.h>
int main(void){ int ft; int og;
// Basic specifiers ft = ft_printf("char: %c\n", 'A'); og = printf("char: %c\n", 'A'); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("string: %s\n", "hello"); og = printf("string: %s\n", "hello"); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("int: %d\n", 42); og = printf("int: %d\n", 42); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("int: %i\n", 42); og = printf("int: %i\n", 42); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("unsigned: %u\n", 42u); og = printf("unsigned: %u\n", 42u); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("hex lower: %x\n", 255); og = printf("hex lower: %x\n", 255); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("hex upper: %X\n", 255); og = printf("hex upper: %X\n", 255); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("percent: %%\n"); og = printf("percent: %%\n"); ft_printf("ft:%d og:%d\n\n", ft, og);
// Pointer int x = 42; ft = ft_printf("pointer: %p\n", &x); og = printf("pointer: %p\n", &x); ft_printf("ft:%d og:%d\n\n", ft, og);
// Edge cases - numbers ft = ft_printf("zero: %d\n", 0); og = printf("zero: %d\n", 0); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("negative: %d\n", -42); og = printf("negative: %d\n", -42); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("INT_MAX: %d\n", INT_MAX); og = printf("INT_MAX: %d\n", INT_MAX); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("INT_MIN: %d\n", INT_MIN); og = printf("INT_MIN: %d\n", INT_MIN); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("UINT_MAX: %u\n", UINT_MAX); og = printf("UINT_MAX: %u\n", UINT_MAX); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("negative as unsigned: %u\n", -1); og = printf("negative as unsigned: %u\n", -1); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("hex zero: %x\n", 0); og = printf("hex zero: %x\n", 0); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("hex UINT_MAX lower: %x\n", UINT_MAX); og = printf("hex UINT_MAX lower: %x\n", UINT_MAX); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("hex UINT_MAX upper: %X\n", UINT_MAX); og = printf("hex UINT_MAX upper: %X\n", UINT_MAX); ft_printf("ft:%d og:%d\n\n", ft, og);
// Edge cases - strings ft = ft_printf("empty string: %s\n", ""); og = printf("empty string: %s\n", ""); ft_printf("ft:%d og:%d\n\n", ft, og);
// Edge cases - pointers ft = ft_printf("null pointer: %p\n", (void *)NULL); og = printf("null pointer: %p\n", (void *)NULL); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("ULONG_MAX pointer: %p\n", (void *)ULONG_MAX); og = printf("ULONG_MAX pointer: %p\n", (void *)ULONG_MAX); ft_printf("ft:%d og:%d\n\n", ft, og);
// Edge cases - format string structure ft = ft_printf("\n"); og = printf("\n"); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("percent at end: %%\n"); og = printf("percent at end: %%\n"); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("100%%done %d\n", 42); og = printf("100%%done %d\n", 42); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("%d%%\n", 100); og = printf("%d%%\n", 100); ft_printf("ft:%d og:%d\n\n", ft, og);
// Multiple and consecutive specifiers ft = ft_printf("multi: %d %s %c %x\n", 42, "hi", 'Z', 255); og = printf("multi: %d %s %c %x\n", 42, "hi", 'Z', 255); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("consecutive: %d%d%d\n", 1, 2, 3); og = printf("consecutive: %d%d%d\n", 1, 2, 3); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("%d is the answer\n", 42); og = printf("%d is the answer\n", 42); ft_printf("ft:%d og:%d\n\n", ft, og);
ft = ft_printf("the answer is %d\n", 42); og = printf("the answer is %d\n", 42); ft_printf("ft:%d og:%d\n\n", ft, og);
ft_printf("mine %q %& %7 %o %\n\n", ft, og);
return (0);}