bonjour à tous,
je débute en C et je souhaiterai avoir des informations sur ce que fait ce test
MerciCode:if (sscanf(champ, "%s %n", val, &i) != 1)
Version imprimable
bonjour à tous,
je débute en C et je souhaiterai avoir des informations sur ce que fait ce test
MerciCode:if (sscanf(champ, "%s %n", val, &i) != 1)
sscanf retourne le nombre d'éléments correctement assignés (ici: val et &i).
Intuitivement lorsque çà se passe "bien" çà devrait retourner 2 mais %n est une conversion particulière qui ne convertit rien et n'est pas supposé incrémenter le retour de sscanf.
-W
Le spécificateur de format %n place le nombre de caractères lus par scanf() dans la variable (de type int) située à l'adresse &i. sscanf() renvoie ici 1 si la chaine a été saisie "correctement" (pour autant qu'il soit correct de saisir une chaine de caractères avec le spécificateur %s) et stockée dans le tableau de caractères situé à l'adresse val .
Thierry
Le mieux à faire est de lire la doc de la fonction.
http://www.opengroup.org/onlinepubs/...ns/fscanf.html
notamment ce qui concerne "%n" et la valeur retournée. Pose des questions si tu ne comprends pas la doc.
ça ne te ressemble pas Emmanuel de donner des liens qui pointe vers des extensions du langage C. La vrai doc est ici : http://www.open-std.org/jtc1/sc22/wg...docs/n1256.pdf
Le lien fourni par Emmanuel détaille la fonction fscanf suivant la norme POSIX, on remarquera en l'occurrence l'extension "%n$" servant à désigner un argument en particuliers.