Tak jak printf(...) jest używane dla sformatowanego wyjścia, scanf(...) służy do formatowania wejścia.
). Może również zawierać:
| Znak | Wejście - typ argumentu |
| d | dziesiętny, integer - int * |
| i | integer - int * ( wejście może być ósemkowe lub szesnastkowe ) |
| o | ósemkowy, integer - int * ( z lub bez pierwszego 0) |
| u | dziesiętny, unsigned - unsigned int * |
| x | hexadecymalny, integer - int * ( z lub bez 0x ) |
| c | jeden lub więcej znaków - char * ( bez \0 ) |
| s | znaki ( bez spacji, tabulatorów ...) - char * ( z \0 ) |
| e,f,gf | float - float * ( np.: [-]m.dddddde |
| p | wskaźnik - void * |
| n | liczba przekształconych argumentów - int * |
| [...] | nie puste znaki w wejściu - char * |
| [^...] | wyłącz nie puste znaki - char * |
| % | % |
| h może być przed d,i,n,o,u i x gdy wskaźnikiem jest short | |
| l może być przed d,i,n,o,u i x gdy wskaźnikiem jest long | |
| l może być przed e,f i g gdy the wskaźnikiem jest double | |
| L może być przed e,f i g gdy the wskaźnikiem jest long double | |