ft_print_memory.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. /* ************************************************************************** */
  2. /* */
  3. /* ::: :::::::: */
  4. /* ft_print_memory.c :+: :+: :+: */
  5. /* +:+ +:+ +:+ */
  6. /* By: bchanot <bchanot@student.42.fr> +#+ +:+ +#+ */
  7. /* +#+#+#+#+#+ +#+ */
  8. /* Created: 2017/05/01 16:40:12 by bchanot #+# #+# */
  9. /* Updated: 2018/10/14 03:30:06 by bchanot ### ########.fr */
  10. /* */
  11. /* ************************************************************************** */
  12. #include "libft.h"
  13. void print_line(unsigned char *s, size_t start, size_t max)
  14. {
  15. size_t i;
  16. i = start;
  17. while (i < start + 16 && i < max)
  18. {
  19. ft_puthex(s[i], 1);
  20. if (i % 2)
  21. ft_putchar(' ');
  22. i++;
  23. }
  24. while (i < start + 16)
  25. {
  26. ft_putchar(' ');
  27. ft_putchar(' ');
  28. if (i % 2)
  29. ft_putchar(' ');
  30. i++;
  31. }
  32. i = start;
  33. while (i < start + 16 && i < max)
  34. {
  35. ft_putascii(s[i]);
  36. i++;
  37. }
  38. ft_putchar('\n');
  39. }
  40. void ft_print_memory(const void *addr, size_t size)
  41. {
  42. unsigned char *s;
  43. size_t c;
  44. s = (unsigned char *)addr;
  45. c = 0;
  46. while (c < size)
  47. {
  48. print_line(s, c, size);
  49. c += 16;
  50. }
  51. }