Format Strings

Printf


#include <stdio.h>

int printf(const char *format, ...);                            
int fprintf(FILE *stream, const char *format, ...);                 // write into file
int dprintf(int fd, const char *format, ...);                       
int sprintf(char *str, const char *format, ...);                    // store sting into buffer
int snprintf(char *str, size_t size, const char *format, ...);      // store sting of (len = size) into buffer 

#include <stdarg.h>

int vprintf(const char *format, va_list ap);
int vfprintf(FILE *stream, const char *format, va_list ap);
int vdprintf(int fd, const char *format, va_list ap);
int vsprintf(char *str, const char *format, va_list ap);
int vsnprintf(char *str, size_t size, const char *format, va_list ap);

Format Specifiers

%c      ==>     char
%s      ==>     string

%d      ==>     (base 10) integer
%i      ==>     integer (detects the base automatically)  
%u      ==>     unsigned int
%f      ==>     float

%o      ==>     (base 8) integer
%x      ==>     (base 16) integer

%p      ==>     an address (or pointer)

%n      ==>     writes at mem address

// important !! 

%h(Specifier) 	short               // %hi, hu 
%L(Specifier) 	long                


short means bytes at 3 & 4
32bit/4bytes  word/Register
char *p = &Var1;

int Var1 = 0xaabbccdd;
    ┌──────┬──────┬──────┬──────┐
    │ 0xaa │ 0xbb │ 0xcc │ 0xdd │
    └──────┴──────┴──┬───┴───┬──┘
                     │       │
                     │       └──► p+0
                     │
                     └──────────► p+1