#include #include #include #include #include #include "ft_printf.h" #define N__PRINTF(str) printf("%d: P>"str" -> %n", __LINE__, &tmp); printf("%d\n", tmp); #define N_fPRINTF(str) ft_printf("%d: M>"str" -> %n", __LINE__, &tmp); ft_printf("%d\n", tmp); ft_aprintf(&buffer, "%d: A>"str, __LINE__); ft_printf("%s\n\n", buffer); if (buffer) free(buffer); buffer = NULL; #define __PRINTF(str, args...) printf("%d: P>"str" -> %n", __LINE__, args, &tmp); printf("%d\n", tmp); #define _fPRINTF(str, args...) ft_printf("%d: M>"str" -> %n", __LINE__, args, &tmp); ft_printf("%d\n", tmp); ft_aprintf(&buffer, "%d: A>"str, __LINE__, args); ft_printf("%s\n\n", buffer); if (buffer) free(buffer); buffer = NULL; #define TEST_FLOATS(LETTER) \ __PRINTF("number %+"LETTER, 42.12345);\ _fPRINTF("number %+"LETTER, 42.12345);\ __PRINTF("number % "LETTER, 44.12345);\ _fPRINTF("number % "LETTER, 44.12345);\ __PRINTF("number % 4"LETTER, 45.12345);\ _fPRINTF("number % 4"LETTER, 45.12345);\ __PRINTF("number %04"LETTER, 46.12345);\ _fPRINTF("number %04"LETTER, 46.12345);\ __PRINTF("number % 04"LETTER, 47.12345);\ _fPRINTF("number % 04"LETTER, 47.12345);\ __PRINTF("number %-+"LETTER, 48.12345);\ _fPRINTF("number %-+"LETTER, 48.12345);\ __PRINTF("number %-+"LETTER, 49.12345);\ _fPRINTF("number %-+"LETTER, 49.12345);\ __PRINTF("number %- "LETTER, 50.12345);\ _fPRINTF("number %- "LETTER, 50.12345);\ __PRINTF("number %- 4"LETTER"|", 51.12345);\ _fPRINTF("number %- 4"LETTER"|", 51.12345);\ __PRINTF("number %+"LETTER, -42.12345);\ _fPRINTF("number %+"LETTER, -42.12345);\ __PRINTF("number %+"LETTER, -43.12345);\ _fPRINTF("number %+"LETTER, -43.12345);\ __PRINTF("number % "LETTER, -44.12345);\ _fPRINTF("number % "LETTER, -44.12345);\ __PRINTF("number % 4"LETTER, -45.12345);\ _fPRINTF("number % 4"LETTER, -45.12345);\ __PRINTF("number %04"LETTER, -46.12345);\ _fPRINTF("number %04"LETTER, -46.12345);\ __PRINTF("number % 04"LETTER, -47.12345);\ _fPRINTF("number % 04"LETTER, -47.12345);\ __PRINTF("number %-+"LETTER, -48.12345);\ _fPRINTF("number %-+"LETTER, -48.12345);\ __PRINTF("number %-+"LETTER, -49.12345);\ _fPRINTF("number %-+"LETTER, -49.12345);\ __PRINTF("number %- "LETTER, -50.12345);\ _fPRINTF("number %- "LETTER, -50.12345);\ __PRINTF("number %- 4"LETTER"|", -51.12345);\ _fPRINTF("number %- 4"LETTER"|", -51.12345);\ __PRINTF("number %+.3"LETTER, 42.12345);\ _fPRINTF("number %+.3"LETTER, 42.12345);\ __PRINTF("number % .3"LETTER, 44.12345);\ _fPRINTF("number % .3"LETTER, 44.12345);\ __PRINTF("number % 4.3"LETTER, 45.12345);\ _fPRINTF("number % 4.3"LETTER, 45.12345);\ __PRINTF("number %04.3"LETTER, 46.12345);\ _fPRINTF("number %04.3"LETTER, 46.12345);\ __PRINTF("number % 04.3"LETTER, 47.12345);\ _fPRINTF("number % 04.3"LETTER, 47.12345);\ __PRINTF("number %-+.3"LETTER, 48.12345);\ _fPRINTF("number %-+.3"LETTER, 48.12345);\ __PRINTF("number %-+.3"LETTER, 49.12345);\ _fPRINTF("number %-+.3"LETTER, 49.12345);\ __PRINTF("number %- .3"LETTER, 50.12345);\ _fPRINTF("number %- .3"LETTER, 50.12345);\ __PRINTF("number %- 4"LETTER"|", 51.12345);\ _fPRINTF("number %- 4"LETTER"|", 51.12345);\ __PRINTF("number %+.3"LETTER, -42.12345);\ _fPRINTF("number %+.3"LETTER, -42.12345);\ __PRINTF("number %+.3"LETTER, -43.12345);\ _fPRINTF("number %+.3"LETTER, -43.12345);\ __PRINTF("number % .3"LETTER, -44.12345);\ _fPRINTF("number % .3"LETTER, -44.12345);\ __PRINTF("number % 4.3"LETTER, -45.12345);\ _fPRINTF("number % 4.3"LETTER, -45.12345);\ __PRINTF("number %04.3"LETTER, -46.12345);\ _fPRINTF("number %04.3"LETTER, -46.12345);\ __PRINTF("number % 04.3"LETTER, -47.12345);\ _fPRINTF("number % 04.3"LETTER, -47.12345);\ __PRINTF("number %-+.3"LETTER, -48.12345);\ _fPRINTF("number %-+.3"LETTER, -48.12345);\ __PRINTF("number %-+.3"LETTER, -49.12345);\ _fPRINTF("number %-+.3"LETTER, -49.12345);\ __PRINTF("number %- .3"LETTER, -50.12345);\ _fPRINTF("number %- .3"LETTER, -50.12345);\ __PRINTF("number %- 4"LETTER"|", -51.12345);\ _fPRINTF("number %- 4"LETTER"|", -51.12345);\ __PRINTF("number %.1"LETTER"|", -51.99);\ _fPRINTF("number %.1"LETTER"|", -51.99);\ __PRINTF("number %"LETTER"|", NAN);\ _fPRINTF("number %"LETTER"|", NAN);\ __PRINTF("number %"LETTER"|", INFINITY);\ _fPRINTF("number %"LETTER"|", INFINITY);\ __PRINTF("number %"LETTER"|", -NAN);\ _fPRINTF("number %"LETTER"|", -NAN);\ __PRINTF("number %"LETTER"|", -INFINITY);\ _fPRINTF("number %"LETTER"|", -INFINITY); int main() { int tmp =0; char* buffer = NULL; N__PRINTF("test"); N_fPRINTF("test"); N__PRINTF("te%%st"); N_fPRINTF("te%%st"); N__PRINTF("te%%%%st"); N_fPRINTF("te%%%%st"); __PRINTF("number %+d", 42); _fPRINTF("number %+d", 42); __PRINTF("number %+d", 43); _fPRINTF("number %+d", 43); __PRINTF("number % d", 44); _fPRINTF("number % d", 44); __PRINTF("number % 4d", 45); _fPRINTF("number % 4d", 45); __PRINTF("number %04d", 46); _fPRINTF("number %04d", 46); __PRINTF("number % 04d", 47); _fPRINTF("number % 04d", 47); __PRINTF("number %-+d", 48); _fPRINTF("number %-+d", 48); __PRINTF("number %-+d", 49); _fPRINTF("number %-+d", 49); __PRINTF("number %- d", 50); _fPRINTF("number %- d", 50); __PRINTF("number %- 4d|", 51); _fPRINTF("number %- 4d|", 51); __PRINTF("number %+d", -42); _fPRINTF("number %+d", -42); __PRINTF("number %+d", -43); _fPRINTF("number %+d", -43); __PRINTF("number % d", -44); _fPRINTF("number % d", -44); __PRINTF("number % 4d", -45); _fPRINTF("number % 4d", -45); __PRINTF("number %04d", -46); _fPRINTF("number %04d", -46); __PRINTF("number % 04d", -47); _fPRINTF("number % 04d", -47); __PRINTF("number %-+d", -48); _fPRINTF("number %-+d", -48); __PRINTF("number %-+d", -49); _fPRINTF("number %-+d", -49); __PRINTF("number %- d", -50); _fPRINTF("number %- d", -50); __PRINTF("number %- 4d|", -51); _fPRINTF("number %- 4d|", -51); __PRINTF("number %+d", 0); _fPRINTF("number %+d", 0); __PRINTF("number %+d", 0); _fPRINTF("number %+d", 0); __PRINTF("number % d", 0); _fPRINTF("number % d", 0); __PRINTF("number % 4d", 0); _fPRINTF("number % 4d", 0); __PRINTF("number %04d", 0); _fPRINTF("number %04d", 0); __PRINTF("number % 04d", 0); _fPRINTF("number % 04d", 0); __PRINTF("number %-+d", 0); _fPRINTF("number %-+d", 0); __PRINTF("number %-+d", 0); _fPRINTF("number %-+d", 0); __PRINTF("number %- d", 0); _fPRINTF("number %- d", 0); __PRINTF("number %- 4d|", 0); _fPRINTF("number %- 4d|", 0); __PRINTF("number %- 4d|", INT_MIN); _fPRINTF("number %- 4d|", INT_MIN); __PRINTF("number %o", 0); _fPRINTF("number %o", 0); __PRINTF("number %u", 0); _fPRINTF("number %u", 0); __PRINTF("number %x", 0); _fPRINTF("number %x", 0); __PRINTF("number %12o", UINT_MAX); _fPRINTF("number %12o", UINT_MAX); __PRINTF("number %12u", UINT_MAX); _fPRINTF("number %12u", UINT_MAX); __PRINTF("number %12X", UINT_MAX); _fPRINTF("number %12X", UINT_MAX); __PRINTF("number %12x", UINT_MAX); _fPRINTF("number %12x", UINT_MAX); __PRINTF("number %#12o", UINT_MAX); _fPRINTF("number %#12o", UINT_MAX); __PRINTF("number %#12X", UINT_MAX); _fPRINTF("number %#12X", UINT_MAX); __PRINTF("number %#12x", UINT_MAX); _fPRINTF("number %#12x", UINT_MAX); _fPRINTF("number %'+012d", 123456789); _fPRINTF("number %'+012d", 1234567); __PRINTF("char %c", 'e'); _fPRINTF("char %c", 'e'); __PRINTF("char %3c", 'e'); _fPRINTF("char %3c", 'e'); __PRINTF("ptr %18s", "e"); _fPRINTF("ptr %18s", "e"); buffer = NULL; __PRINTF("ptr %18s", buffer); _fPRINTF("ptr %18s", (char*)NULL); __PRINTF("ptr %18p", "e"); _fPRINTF("ptr %18p", "e"); __PRINTF("ptr %18p", NULL); _fPRINTF("ptr %18p", NULL); errno = 7; N__PRINTF("errno %30m"); N_fPRINTF("errno %30m"); __PRINTF("str %18s", "test"); _fPRINTF("str %18s", "test"); __PRINTF("str %5.3s", "test"); _fPRINTF("str %5.3s", "test"); TEST_FLOATS("f"); TEST_FLOATS("F"); /* TEST_FLOATS("a"); TEST_FLOATS("A"); TEST_FLOATS("e"); TEST_FLOATS("E"); TEST_FLOATS("g"); TEST_FLOATS("G"); */ return 0; }