Maison  >  Article  >  développement back-end  >  Le rôle de scanf_s en langage C

Le rôle de scanf_s en langage C

下次还敢
下次还敢original
2024-04-29 20:39:17530parcourir

La fonction de la fonction

scanf_s est de lire les données formatées du flux d'entrée standard dans des variables. Effectuez des vérifications de plage pour éviter les débordements de tampon. Détectez les vulnérabilités des chaînes de format et prévenez les vulnérabilités des applications.

Le rôle de scanf_s en langage C

Le rôle de la fonction scanf_s en langage C

La fonction scanf_s est une fonction d'entrée sécurisée dans la bibliothèque standard du langage C, utilisée pour lire les données formatées à partir du flux d'entrée standard. Elle est similaire à la fonction scanf, mais ajoute des contrôles de sécurité supplémentaires pour éviter les débordements de tampon et les vulnérabilités des chaînes de format.

Fonction

scanf_s La fonction principale de la fonction est :

  • Lire les données formatées à partir du flux d'entrée standard et les stocker dans la variable spécifiée.
  • Effectuez une vérification de plage pour vous assurer que les données d'entrée ne dépassent pas la portée de la variable.
  • Détectez les vulnérabilités des chaînes de format pour empêcher les applications de planter ou d'être exploitées par des attaquants.

Usage

scanf_s La syntaxe de la fonction est la suivante :

<code class="c">int scanf_s(const char *format, ...);</code>

Où :

  • format est une chaîne de format qui spécifie le format des données d'entrée. format 是一个格式字符串,指定输入数据的格式。
  • ...
  • ... est une liste d'arguments variadiques contenant les adresses à stocker dans les variables.

Exemple

L'exemple suivant démontre l'utilisation de la fonction scanf_s :

<code class="c">int age;
if (scanf_s("Enter your age: %d", &age) == 1) {
    printf("Your age is %d.\n", age);
} else {
    printf("Invalid input.\n");
}</code>
Dans cet exemple :
  • La fonction scanf_s lit un entier (en utilisant le spécificateur de format %d) ​​et le stocke dans le variable d'âge.
  • Si la saisie est valide (c'est-à-dire qu'un entier a été saisi), imprimez la valeur de la variable age.
  • Sinon, imprimez un message d'erreur.

Différences par rapport à scanf

La principale différence entre la fonction scanf_s et la fonction scanf est qu'elle est sûre. La fonction scanf peut autoriser des débordements de tampon et des vulnérabilités de chaîne de formatage, tandis que la fonction scanf_s évite ces problèmes en effectuant des contrôles de sécurité supplémentaires.

Conclusion

La fonction scanf_s est une version sécurisée de la fonction scanf qui peut être utilisée pour lire des données formatées à partir du flux d'entrée standard. Il effectue une vérification de plage et une détection de vulnérabilité de chaîne de format pour empêcher les débordements de tampon et les attaques. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn