diff --git a/ex12/ft_print_memory.c b/ex12/ft_print_memory.c index c404360..2dfe548 100644 --- a/ex12/ft_print_memory.c +++ b/ex12/ft_print_memory.c @@ -6,7 +6,7 @@ /* By: tischmid +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/03/21 05:44:01 by tischmid #+# #+# */ -/* Updated: 2023/03/24 01:40:48 by tischmid ### ########.fr */ +/* Updated: 2023/03/24 20:27:15 by tischmid ### ########.fr */ /* */ /* ************************************************************************** */ @@ -46,7 +46,10 @@ int ft_strlen(char *str) void print_addr_vals(void *addr, unsigned int width, int hex, char *delim) { - while (width-- > 0) + unsigned int i; + + i = -1; + while (++i < width) { if (hex) print_hex(*(unsigned char *) addr, 2); @@ -54,7 +57,7 @@ void print_addr_vals(void *addr, unsigned int width, int hex, char *delim) write(1, addr, 1); else write(1, ".", 1); - if ((!hex || (hex && width % 2 == 0)) && *delim) + if ((!hex || (hex && i % 2 == 1)) && *delim) write(1, delim, 1); addr++; } @@ -72,12 +75,14 @@ void *ft_print_memory(void *addr, unsigned int size) { if (size - (++lines) * WIDTH < 16) width = size - lines * WIDTH; + if (!width) + break ; print_hex((ULL) addr, 16); write(1, ":", 1); write(1, DELIMITER, 1); print_addr_vals(addr, width, 1, DELIMITER); missing_chars = (WIDTH - width) * (2 + ft_strlen(DELIMITER)); - missing_chars -= (WIDTH - width + 1) / 2; + missing_chars -= (WIDTH - width) / 2; while (missing_chars-- > 0) write(1, DELIMITER, 1); print_addr_vals(addr, width, 0, ""); @@ -106,7 +111,8 @@ void *ft_print_memory(void *addr, unsigned int size) int main(void) { char *ptr = STR; - ft_print_memory(ptr, 92); + for (int i = 0; i < 33; ++i) + ft_print_memory(ptr, i); return (0); } */ ////