Différence entre sscanf et sscanf_s

sscanf()

sscanf() est utilisé pour lire une entrée formatée à partir d’une chaîne.
 
Syntaxe: int sscanf (const char * s, const char * format, ...);
 
 

int: type de retour.
s: chaîne utilisée pour récupérer des données.
format: chaîne contenant les spécificateurs de type.
: Arguments contient des pointeurs permettant d’allouer de la mémoire avec le type approprié. Il devrait y avoir au moins autant d’arguments que le nombre de valeurs stockées par les spécificateurs de format.

En cas de succès, la fonction renvoie le nombre de variables renseignées. En cas d’échec d’entrée avant que les données puissent être lues avec succès, EOF est renvoyé.
 
Exemple
L’exemple suivant montre l’utilisation de la fonction sscanf().

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main () {
   int day, year;
   char weekday[20], month[20], d[100];

   strcpy( d, "Monday May 12 2010" );
   sscanf( d, "%s %s %d  %d", weekday, month, &day, &year );

   printf("%s %d, %d = %s\n", month, day, year, weekday );
    
   return(0);
}

Après la compilation et l’exécution du programme ci-dessus, il produira le résultat suivant :

May 12, 2010 = Monday

 

sscanf_s()

sscanf_s() est une fonction sécurisée de sscanf() et les fonctions sécurisées exigent que la taille de chaque champ de type c, C, s soit transmise en tant qu’argument immédiatement après la variable.
 
Syntaxe: int sscanf_s(const char * restrict buffer, const char * restrict format, ...);

sscanf_s a un argument supplémentaire où vous pouvez spécifier la taille du tampon et effectivement contrôler la limite de l’entrée.

En cas de succès, la fonction renvoie le nombre de variables renseignées. En cas d’échec d’entrée avant que les données puissent être lues avec succès, EOF est renvoyé.
 
 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *