02: Exam Rank

size_t i = 0; while (s[i]) i++; return (i);

// Put this at the top of your file, before any function #include <stdio.h> // YES, you can use printf for debugging, just remove before submit #define DEBUG 1 #if DEBUG ) #else define DPRINTF(...) #endif

// ft_putstr_fd - for debugging without printf void ft_putstr_fd(char *s, int fd) exam rank 02

if (!s) return ; write(fd, s, ft_strlen(s));

| Project | Difficulty | Trap | Why interesting? | |---------|------------|------|------------------| | | High | Handling %p (null pointer prints "(nil)" ? Or 0x0 ?) | It's the real test of parsing and variadic functions. | | get_next_line | Medium | The static variable, buffer size 1 edge case, newline hunting. | It forces you to understand static memory across calls. | size_t i = 0; while (s[i]) i++; return

va_list args; va_start(args, fmt); int count = 0; while (*fmt) if (*fmt == '%') *fmt == 'i') count += ft_putnbr(va_arg(args, int)); else if (*fmt == 'u') count += ft_putunbr(va_arg(args, unsigned int)); else if (*fmt == 'x') count += ft_puthex(va_arg(args, unsigned int), 0); else if (*fmt == 'X') count += ft_puthex(va_arg(args, unsigned int), 1); else if (*fmt == '%') count += write(1, "%", 1); else count += write(1, fmt, 1); fmt++; va_end(args); return (count);

// Write these from memory NOW (practice before exam) #include <stdlib.h> // malloc, free #include <unistd.h> // write #include <stdarg.h> // va_list (for ft_printf) // ft_strlen - your lifeline size_t ft_strlen(const char *s) | | get_next_line | Medium | The static

Start with ft_printf . If you nail its parser, you've proven you understand memory and flags. If you struggle after 1 hour, abort to get_next_line . Pass 3: The "No Man Page" Survival (Remaining time) You will forget syntax. It's fine. Keep these in your muscle memory:

Go get that rank 02. 🎓