Spécificateurs de formats pour scanf
(pour plus de précisions faire man scanf sous unix)
 

 Spécificateur  Caractères à interpréter et type de l'argument  Compléments ou exemple
%d

%hd (pour short*)
%ld (pour long*)

entier sous forme décimale
int*

Possibilité de préciser une largeur de champ maximale
ex: %4d pour un entier sur  au plus 4 caractères.
%i

%hi (pour short*)
%li (pour long*)

entier sous forme décimale ou sous forme octale (précédé par 0) ou hexa (précédé par 0x ou 0X)
int*
idem
%u

%hu (pour short*)
%lu (pour long*)

entier non signé sous forme décimale
int*
idem
%o

%ho (pour short*)
%lo (pour long*)

entier sous forme octale (précédé ou non par 0)
int*
idem
%x

%hx (si arg  short*)
%lx (si arg  long*)

entier sous forme hexadécimale (précédé ou non par 0x ou 0X);
int*
idem
%c (pour arg char *) caractère (caractère d'espacement aussi);
char*
Possibilité de lire n caractères consécutifs et de les ranger dans des char contiguës
Ex : %5c reconnait 5 caractères
%s chaîne de caractères (sans guillemets, et sans caractères d'espacement  (un '\0' est ajouté a la fin de l'argument)
char*
 %10s : chaîne d'au plus 9 caractères
%e, %f, %g 

%le, %lf, %lg 
 (si arg  double*)
 %Le, %Lf, %Lg
(pour long double)

nombre en virgule flottante
float*
%p pointeur comme l'imprimerait printf (%p); 
void*

%n écrit dans l'argument, le nombre de caractères lus jusque là par scanf
int*
Ne lit aucune donnée en entrée et n'incrémente pas le nombre d'objets convertis
%[..] reconnait la plus longue chaîne de caractères (non vide) en entrée, composée de caractères faisant partie de l'ensemble entre crochets (un '\0' est ajouté a la fin de l'argument)
char*
 [0-9] identifie tout chiffre. 
[a-k] identifie les lettres comprises entre a et k.
[]..] permet de reconnaitre également le caractère ]
%[^..] reconnait la plus longue chaîne de caractères (non vide) en entrée, composée de caractères ne faisant pas partie de l'ensemble entre crochets (un '\0' est ajouté a la fin de l'argument)
char*
[^0-9] identifie tout caractère different d'un chiffre. 
[^a-k] identifie tout caractère sauf les lettres comprises entre a et k.
[^]..] permet d'ajouter ] aux caractères à ne pas reconnaitre.
 %* (suivi de l'un des spécificateurs ci-dessus) reconnait la donnée correspondant au spécificateur précisé, et l'ignore
% ne réalise aucune affectation