fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdarg.h>
  4.  
  5. void my_printf(const char *fmt, ...)
  6. {
  7. va_list ap;
  8. va_start(ap, fmt);
  9. char c;
  10. while ((c = *fmt++) != '\0') {
  11. if (c == '%') {
  12. if ((c = *fmt++) == '\0') {
  13. break;
  14. }
  15. switch(c) {
  16. case 's': {
  17. const char *s = va_arg(ap, const char *);
  18. fwrite(s, 1, strlen(s), stdout);
  19. break;
  20. }
  21. case 'c': {
  22. const char x = (char) va_arg(ap, int);
  23. putchar(x);
  24. break;
  25. }
  26. case '%':
  27. putchar('%');
  28. break;
  29. case 'x': /* ... */; break;
  30. case 'z': /* ... */; break;
  31. default: putchar(c); break;
  32. }
  33. } else {
  34. putchar(c);
  35. }
  36. }
  37. va_end(ap);
  38. }
  39.  
  40. int main(void)
  41. {
  42. my_printf("%s%c", "Hello, world", '\n');
  43. }
Success #stdin #stdout 0s 9424KB
stdin
Standard input is empty
stdout
Hello, world