Le format "[%99[^]]]" est composé de :
1- le caractère '['
2- un format de lecture d'une chaine %99[^]] de la forme %n[xxx].
Ce format correspond à lire une chaine (y compris les caractères <blancs> au sens de isspace()) jusqu'à ce que le premier évènement parmi les trois suivants se produise
-- a- on trouve le caractère ']' qui est exclu de la lecture (à cause de ^] )
-- b- on a lu 99 caractères
-- c- on est arrivé en fin de chaine
3- le caractère ']'
Alors,
1- La chaine à lire doit commencer par '['. Sinon la conversion s'arrête et sscanf() renvoie 0
(sans <blancs> qui le précèdent car dans le format '[' n'a pas été précédé d'un ou plusieurs espaces)
2- Lecture de la chaine qui suit le '['. Les <blancs> en tête, au milieu et en fin de la chaine font partie de la chaine et sont mis dans la chaine de destination. Si cette chaine est vide, sscanf() renvoie EOF, sinon il renvoie 1
3- Si (2) est terminé par la condition (a), on saute le caractère ']'
Exemples de lecture d'une chaine :
* Avec le format "[%99[^]]]" "[" : pas de conversion, retourne -1
" [ 123 456 ] = x" : pas de conversion, retourne 0
"[ 123 456 ] = x" : conversion " 123 456 ", retourne 1
"[ 123 456 = x " : conversion " 123 456 = x ", retourne 1
* Avec le format " [ %99[^]]]" "[" : pas de conversion, retourne -1
" 123 456 ] = x" : pas de conversion, retourne 0
" [ 123 456 ] = x" : conversion "123 456 ", retourne 1
"[ 123 456 ] = x" : conversion "123 456 ", retourne 1
Partager