main.c 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. #include <math.h>
  2. #include <errno.h>
  3. #include <stdio.h>
  4. #include <limits.h>
  5. #include <stdlib.h>
  6. #include "ft_printf.h"
  7. #define N__PRINTF(str) printf("%d: P>"str" -> %n", __LINE__, &tmp); printf("%d\n", tmp);
  8. #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;
  9. #define __PRINTF(str, args...) printf("%d: P>"str" -> %n", __LINE__, args, &tmp); printf("%d\n", tmp);
  10. #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;
  11. #define TEST_FLOATS(LETTER) \
  12. __PRINTF("number %+"LETTER, 42.12345);\
  13. _fPRINTF("number %+"LETTER, 42.12345);\
  14. __PRINTF("number % "LETTER, 44.12345);\
  15. _fPRINTF("number % "LETTER, 44.12345);\
  16. __PRINTF("number % 4"LETTER, 45.12345);\
  17. _fPRINTF("number % 4"LETTER, 45.12345);\
  18. __PRINTF("number %04"LETTER, 46.12345);\
  19. _fPRINTF("number %04"LETTER, 46.12345);\
  20. __PRINTF("number % 04"LETTER, 47.12345);\
  21. _fPRINTF("number % 04"LETTER, 47.12345);\
  22. __PRINTF("number %-+"LETTER, 48.12345);\
  23. _fPRINTF("number %-+"LETTER, 48.12345);\
  24. __PRINTF("number %-+"LETTER, 49.12345);\
  25. _fPRINTF("number %-+"LETTER, 49.12345);\
  26. __PRINTF("number %- "LETTER, 50.12345);\
  27. _fPRINTF("number %- "LETTER, 50.12345);\
  28. __PRINTF("number %- 4"LETTER"|", 51.12345);\
  29. _fPRINTF("number %- 4"LETTER"|", 51.12345);\
  30. __PRINTF("number %+"LETTER, -42.12345);\
  31. _fPRINTF("number %+"LETTER, -42.12345);\
  32. __PRINTF("number %+"LETTER, -43.12345);\
  33. _fPRINTF("number %+"LETTER, -43.12345);\
  34. __PRINTF("number % "LETTER, -44.12345);\
  35. _fPRINTF("number % "LETTER, -44.12345);\
  36. __PRINTF("number % 4"LETTER, -45.12345);\
  37. _fPRINTF("number % 4"LETTER, -45.12345);\
  38. __PRINTF("number %04"LETTER, -46.12345);\
  39. _fPRINTF("number %04"LETTER, -46.12345);\
  40. __PRINTF("number % 04"LETTER, -47.12345);\
  41. _fPRINTF("number % 04"LETTER, -47.12345);\
  42. __PRINTF("number %-+"LETTER, -48.12345);\
  43. _fPRINTF("number %-+"LETTER, -48.12345);\
  44. __PRINTF("number %-+"LETTER, -49.12345);\
  45. _fPRINTF("number %-+"LETTER, -49.12345);\
  46. __PRINTF("number %- "LETTER, -50.12345);\
  47. _fPRINTF("number %- "LETTER, -50.12345);\
  48. __PRINTF("number %- 4"LETTER"|", -51.12345);\
  49. _fPRINTF("number %- 4"LETTER"|", -51.12345);\
  50. __PRINTF("number %+.3"LETTER, 42.12345);\
  51. _fPRINTF("number %+.3"LETTER, 42.12345);\
  52. __PRINTF("number % .3"LETTER, 44.12345);\
  53. _fPRINTF("number % .3"LETTER, 44.12345);\
  54. __PRINTF("number % 4.3"LETTER, 45.12345);\
  55. _fPRINTF("number % 4.3"LETTER, 45.12345);\
  56. __PRINTF("number %04.3"LETTER, 46.12345);\
  57. _fPRINTF("number %04.3"LETTER, 46.12345);\
  58. __PRINTF("number % 04.3"LETTER, 47.12345);\
  59. _fPRINTF("number % 04.3"LETTER, 47.12345);\
  60. __PRINTF("number %-+.3"LETTER, 48.12345);\
  61. _fPRINTF("number %-+.3"LETTER, 48.12345);\
  62. __PRINTF("number %-+.3"LETTER, 49.12345);\
  63. _fPRINTF("number %-+.3"LETTER, 49.12345);\
  64. __PRINTF("number %- .3"LETTER, 50.12345);\
  65. _fPRINTF("number %- .3"LETTER, 50.12345);\
  66. __PRINTF("number %- 4"LETTER"|", 51.12345);\
  67. _fPRINTF("number %- 4"LETTER"|", 51.12345);\
  68. __PRINTF("number %+.3"LETTER, -42.12345);\
  69. _fPRINTF("number %+.3"LETTER, -42.12345);\
  70. __PRINTF("number %+.3"LETTER, -43.12345);\
  71. _fPRINTF("number %+.3"LETTER, -43.12345);\
  72. __PRINTF("number % .3"LETTER, -44.12345);\
  73. _fPRINTF("number % .3"LETTER, -44.12345);\
  74. __PRINTF("number % 4.3"LETTER, -45.12345);\
  75. _fPRINTF("number % 4.3"LETTER, -45.12345);\
  76. __PRINTF("number %04.3"LETTER, -46.12345);\
  77. _fPRINTF("number %04.3"LETTER, -46.12345);\
  78. __PRINTF("number % 04.3"LETTER, -47.12345);\
  79. _fPRINTF("number % 04.3"LETTER, -47.12345);\
  80. __PRINTF("number %-+.3"LETTER, -48.12345);\
  81. _fPRINTF("number %-+.3"LETTER, -48.12345);\
  82. __PRINTF("number %-+.3"LETTER, -49.12345);\
  83. _fPRINTF("number %-+.3"LETTER, -49.12345);\
  84. __PRINTF("number %- .3"LETTER, -50.12345);\
  85. _fPRINTF("number %- .3"LETTER, -50.12345);\
  86. __PRINTF("number %- 4"LETTER"|", -51.12345);\
  87. _fPRINTF("number %- 4"LETTER"|", -51.12345);\
  88. __PRINTF("number %.1"LETTER"|", -51.99);\
  89. _fPRINTF("number %.1"LETTER"|", -51.99);\
  90. __PRINTF("number %"LETTER"|", NAN);\
  91. _fPRINTF("number %"LETTER"|", NAN);\
  92. __PRINTF("number %"LETTER"|", INFINITY);\
  93. _fPRINTF("number %"LETTER"|", INFINITY);\
  94. __PRINTF("number %"LETTER"|", -NAN);\
  95. _fPRINTF("number %"LETTER"|", -NAN);\
  96. __PRINTF("number %"LETTER"|", -INFINITY);\
  97. _fPRINTF("number %"LETTER"|", -INFINITY);
  98. int main()
  99. {
  100. int tmp =0;
  101. char* buffer = NULL;
  102. N__PRINTF("test");
  103. N_fPRINTF("test");
  104. N__PRINTF("te%%st");
  105. N_fPRINTF("te%%st");
  106. N__PRINTF("te%%%%st");
  107. N_fPRINTF("te%%%%st");
  108. __PRINTF("number %+d", 42);
  109. _fPRINTF("number %+d", 42);
  110. __PRINTF("number %+d", 43);
  111. _fPRINTF("number %+d", 43);
  112. __PRINTF("number % d", 44);
  113. _fPRINTF("number % d", 44);
  114. __PRINTF("number % 4d", 45);
  115. _fPRINTF("number % 4d", 45);
  116. __PRINTF("number %04d", 46);
  117. _fPRINTF("number %04d", 46);
  118. __PRINTF("number % 04d", 47);
  119. _fPRINTF("number % 04d", 47);
  120. __PRINTF("number %-+d", 48);
  121. _fPRINTF("number %-+d", 48);
  122. __PRINTF("number %-+d", 49);
  123. _fPRINTF("number %-+d", 49);
  124. __PRINTF("number %- d", 50);
  125. _fPRINTF("number %- d", 50);
  126. __PRINTF("number %- 4d|", 51);
  127. _fPRINTF("number %- 4d|", 51);
  128. __PRINTF("number %+d", -42);
  129. _fPRINTF("number %+d", -42);
  130. __PRINTF("number %+d", -43);
  131. _fPRINTF("number %+d", -43);
  132. __PRINTF("number % d", -44);
  133. _fPRINTF("number % d", -44);
  134. __PRINTF("number % 4d", -45);
  135. _fPRINTF("number % 4d", -45);
  136. __PRINTF("number %04d", -46);
  137. _fPRINTF("number %04d", -46);
  138. __PRINTF("number % 04d", -47);
  139. _fPRINTF("number % 04d", -47);
  140. __PRINTF("number %-+d", -48);
  141. _fPRINTF("number %-+d", -48);
  142. __PRINTF("number %-+d", -49);
  143. _fPRINTF("number %-+d", -49);
  144. __PRINTF("number %- d", -50);
  145. _fPRINTF("number %- d", -50);
  146. __PRINTF("number %- 4d|", -51);
  147. _fPRINTF("number %- 4d|", -51);
  148. __PRINTF("number %+d", 0);
  149. _fPRINTF("number %+d", 0);
  150. __PRINTF("number %+d", 0);
  151. _fPRINTF("number %+d", 0);
  152. __PRINTF("number % d", 0);
  153. _fPRINTF("number % d", 0);
  154. __PRINTF("number % 4d", 0);
  155. _fPRINTF("number % 4d", 0);
  156. __PRINTF("number %04d", 0);
  157. _fPRINTF("number %04d", 0);
  158. __PRINTF("number % 04d", 0);
  159. _fPRINTF("number % 04d", 0);
  160. __PRINTF("number %-+d", 0);
  161. _fPRINTF("number %-+d", 0);
  162. __PRINTF("number %-+d", 0);
  163. _fPRINTF("number %-+d", 0);
  164. __PRINTF("number %- d", 0);
  165. _fPRINTF("number %- d", 0);
  166. __PRINTF("number %- 4d|", 0);
  167. _fPRINTF("number %- 4d|", 0);
  168. __PRINTF("number %- 4d|", INT_MIN);
  169. _fPRINTF("number %- 4d|", INT_MIN);
  170. __PRINTF("number %o", 0);
  171. _fPRINTF("number %o", 0);
  172. __PRINTF("number %u", 0);
  173. _fPRINTF("number %u", 0);
  174. __PRINTF("number %x", 0);
  175. _fPRINTF("number %x", 0);
  176. __PRINTF("number %12o", UINT_MAX);
  177. _fPRINTF("number %12o", UINT_MAX);
  178. __PRINTF("number %12u", UINT_MAX);
  179. _fPRINTF("number %12u", UINT_MAX);
  180. __PRINTF("number %12X", UINT_MAX);
  181. _fPRINTF("number %12X", UINT_MAX);
  182. __PRINTF("number %12x", UINT_MAX);
  183. _fPRINTF("number %12x", UINT_MAX);
  184. __PRINTF("number %#12o", UINT_MAX);
  185. _fPRINTF("number %#12o", UINT_MAX);
  186. __PRINTF("number %#12X", UINT_MAX);
  187. _fPRINTF("number %#12X", UINT_MAX);
  188. __PRINTF("number %#12x", UINT_MAX);
  189. _fPRINTF("number %#12x", UINT_MAX);
  190. _fPRINTF("number %'+012d", 123456789);
  191. _fPRINTF("number %'+012d", 1234567);
  192. __PRINTF("char %c", 'e');
  193. _fPRINTF("char %c", 'e');
  194. __PRINTF("char %3c", 'e');
  195. _fPRINTF("char %3c", 'e');
  196. __PRINTF("ptr %18s", "e");
  197. _fPRINTF("ptr %18s", "e");
  198. buffer = NULL;
  199. __PRINTF("ptr %18s", buffer);
  200. _fPRINTF("ptr %18s", (char*)NULL);
  201. __PRINTF("ptr %18p", "e");
  202. _fPRINTF("ptr %18p", "e");
  203. __PRINTF("ptr %18p", NULL);
  204. _fPRINTF("ptr %18p", NULL);
  205. errno = 7;
  206. N__PRINTF("errno %30m");
  207. N_fPRINTF("errno %30m");
  208. __PRINTF("str %18s", "test");
  209. _fPRINTF("str %18s", "test");
  210. __PRINTF("str %5.3s", "test");
  211. _fPRINTF("str %5.3s", "test");
  212. TEST_FLOATS("f");
  213. TEST_FLOATS("F");
  214. /*
  215. TEST_FLOATS("a");
  216. TEST_FLOATS("A");
  217. TEST_FLOATS("e");
  218. TEST_FLOATS("E");
  219. TEST_FLOATS("g");
  220. TEST_FLOATS("G");
  221. */
  222. return 0;
  223. }