bonjour à tous,
je débute en C et je souhaiterai avoir des informations sur ce que fait ce test
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (sscanf(champ, "%s %n", val, &i) != 1)
bonjour à tous,
je débute en C et je souhaiterai avoir des informations sur ce que fait ce test
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
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.
Partager