fonction snprintf en c

fonction snprintf en c
Dans la fonction snprintf (), nous voulons apprendre à formater les données. Le formatage des données est essentiel lorsque nous écrivons un état du processus ou de tout autre module dans un fichier, et un autre module peut y accéder. À cette fin, nous voulons partager ces données entre les modules. Dans ce cas, nous voulons formater nos données afin que d'autres modules puissent les comprendre de la même manière.

prototype de fonction snprintf ()

La fonction snprintf () est un type de données prédéfini. Sa définition est écrite dans un fichier d'en-tête standard dans C Fichier d'en-tête nommé.

Caractéristiques de la fonction snprintf ()

int snprintf (char * st, max_size, const char * format,… .));

Ici, nous utilisons plusieurs paramètres, tels que la fonction de ces paramètres:

  • * ST est un tampon qui peut contenir la chaîne.
  • max_size: le plus grand nombre de caractères qu'un tampon peut contenir.
  • Format qui contient une chaîne et d'autres spécifications comme printf ().
  • La fonction snprintf () renvoie une valeur entière, et son travail consiste à compter le nombre de caractères à l'intérieur du tampon.

Exemple de programmation 1

Ici, nous verrons la mise en œuvre de la fonction snprintf ():

#inclure
#inclure
int main ( )

char buff_max [15]; // déclarant une chaîne
int x = 15;
double y = 26.5;
snprintf (buff_max, 14, "Examiner le test de débordement, les valeurs de x =% d et y =% lf", x, y); // Utilisations de la fonction snprintf ()
printf ("% s \ n", buff_max); // imprime la valeur de la chaîne
retour 0;

Sortir

Explication

Dans cet exemple de programmation, nous utiliserons la fonction snprintf () pour formater une chaîne. Ici, nous déclarons une chaîne nommée «buff_max», qui contient un maximum de 15 caractères, sauf que nous déclarons un type entier variable x et double type variable y.

Maintenant, si nous utilisons la fonction snprintf (), nous devons transmettre quelques arguments à l'intérieur de sa parenthèse. Les arguments sont les premiers de toutes les cordes. Nous devons mentionner la taille que le tampon peut accumuler; Le troisième paramètre est la chaîne formatée, puis la variable.

L'avantage de l'utilisation de la fonction snprintf () est que seuls 14 caractères peuvent être imprimés, et le reste des caractères est ignoré. Le programme sera sûr et le programme ne s'écrase pas.

Exemple de programmation 2

Dans cet exemple de programmation, nous verrons un autre exemple de la fonction snprintf ():

#inclure
#inclure
#define max_buff 1024
#define size_name (15)
typedef struct

name char [size_name]; // déclarant une chaîne
non signé int rollno;
doubles marques;
ÉTUDIANT ; // Création de types de données définies par l'utilisateur
int Main (intargc, char * argv [])

tampon char [max_buff] = 0;
Student S1 = .name = "avishek" , .rollno = 6 , .marques = 77.17;
snprintf (tampon, sizeof (tampon), "% s% d% lf", s1.Nom, S1.Rollno, S1.Des marques ) ; // Utilisations de la fonction snprintf ()
printf ("buffer =% s \ n", tampon);
retour 0;

Sortir

Explication

Dans cet exemple de programmation, nous définirons le nom de la structure ÉTUDIANT. Les membres de données du ÉTUDIANT sont le nom, le no et les marques. À l'intérieur de la fonction Main (). Nous déclarons une variable S1 qui est un type de données étudiant. Si nous souhaitons imprimer la valeur de chaque distension de la variable S1, nous utiliserons la fonction snprintf (). Les paramètres du SNPrintf sont le tampon, la taille du tampon, le format de la chaîne et tous les membres de données qui doivent être formatés. Si nous imprimons le tampon, la sortie sera indiquée au moniteur en tant que sortie formatée.

Exemple de programmation 3

Prenons un autre exemple important de la fonction snprintf () et comment il fonctionne.

#inclure
#inclure
#inclure
#define size_buffer 1024
#define size_name (20)
#define format_string "(% s,% d,% 0.2lf), "
#define size_buffer 1024
#define size_name (20)
#define format_string "(% s,% d,% 0.2lf), "
typedef struct

name char [size_name];
non signé int rollno;
double pourcentage;
PERSONNE ; // définir une structure.
int Main (intargc, char * argv [])

tampon char [size_buffer] = 0; // déclarant un tampon.
Personne étudiant_data [] = .name = "Raul", .rollno = 1020, .pourcentage = 72.30334, \
.name = "Paul", .rollno = 1021, .pourcentage = 86.3456 \
; // Création d'un éventail de structure.
int num_students = sizeof (Student_data) / sizeof (personne);
int pos = 0;
pour (int i = 0; i
pos + = snprintf (tampon + pos, sizeof (tampon), format_string, étudiant_data [i].nom, étudiant_data [i].rouler,
Student_data [i].pourcentage);

printf ("buffer = [% s] \ n", tampon);
retour 0;

Sortir

Explication

Ici, nous prenons un tableau de structures et voyons le processus de fonction snprintf (). Nous définissons une structure nommée PERSONNE, et à l'intérieur de la fonction principale (), nous déclarerons un tableau des structures du PERSONNE Type de données et attribuer une certaine valeur à ce tableau. Nous pouvons utiliser une boucle pour le comptoir. Enfin, nous allons imprimer l'intégralité du tampon avec toutes les données. Nous itringons continuellement sur ce tableau de structures. Maintenant, nous enregistrons toutes les données dans ce tampon, selon la position.

Pour la première fois, le premier étudiant est venu et il rédigera des données sur ce tampon. Ensuite, la valeur de la position changera et le tampon écrira pour cette position. C'est comme ça que ça marche.

Avantage de l'utilisation de la fonction snprintf ()

L'avantage de l'utilisation de la fonction snprintf () est que supposons que le tampon déborde par le caractère de sa taille maximale. Le programme sera sécurisé pour éviter un crash. Les autres caractères sont ignorés par la fonction snprintf (), qui exécutera le programme.

Conclusion

Dans le langage C, similaire à la fonction printf (), une autre fonction nommée snprintf () est utilisée pour formater la chaîne. Pour résoudre le problème de l'utilisation de la fonction sprintf (), le snprintf () est amené à la bibliothèque C pour rendre le programme plus sûr et plus élégant. Dans cet article, nous avons discuté de la fonction snprintf () dans les exemples fournis.