fork download
  1. #include <stdio.h>
  2. #include <stdarg.h>
  3.  
  4. void
  5. sajatprintf (char *formatumsztring, ...)
  6. {
  7. va_list arg_pointer;
  8. char *p = formatumsztring, c;
  9.  
  10. va_start (arg_pointer, formatumsztring);
  11. for (c = *p; *p; ++p)
  12. {
  13. if (*p == '%')
  14. {
  15. c = *++p;
  16. if (c == 'd')
  17. printf ("%d", va_arg (arg_pointer, int));
  18. else if (c == 'f')
  19. printf ("%f", va_arg (arg_pointer, double));
  20. else if (c == 'c')
  21. printf ("%c", va_arg (arg_pointer, int));
  22. else if (c == 'u')
  23. printf ("%u", va_arg (arg_pointer, unsigned int));
  24.  
  25. else if (c == 'L')
  26. printf ("%Lf", va_arg (arg_pointer, long double));
  27. else if (c == 'x')
  28. printf ("%x", va_arg (arg_pointer, unsigned int));
  29. }
  30. else
  31. printf ("%c", *p);
  32. }
  33. va_end (arg_pointer);
  34. }
  35.  
  36. int
  37. main (void)
  38. {
  39. int a = 5;
  40. double b = 5.5;
  41. char c = '*';
  42. unsigned int d = 45695;
  43. long double e = 1.79769e+2;
  44. int f = 0xFF;
  45. sajatprintf
  46. (" int: %d\n char: %c\n float: %f\n int: %d\n unsigned int: %u\n long double: %Lf\n hex%% int: %d\n %%hex: %x\n",
  47. a, c, b, a, d, e, f, f);
  48. return 0;
  49. }
Success #stdin #stdout 0.01s 1720KB
stdin
Standard input is empty
stdout
 int: 5
 char: *
 float: 5.500000
 int:  5
 unsigned int: 45695
 long double: 179.769000f
 hex int: 255
 hex: ff