Maison  >  Article  >  développement back-end  >  Utilisation de scanf_s en langage C

Utilisation de scanf_s en langage C

下次还敢
下次还敢original
2024-04-30 00:33:17425parcourir

scanf_s est une fonction sécurisée en langage C permettant de lire des données formatées afin d'éviter les attaques par débordement de tampon. Sa syntaxe est : scanf_s(format, ...). Étapes d'utilisation : Incluez le fichier d'en-tête stdio.h. Ajoutez le symbole & avant la variable. Assurez-vous que le spécificateur de format correspond au type de données. Vérifiez la valeur de retour pour détecter les erreurs.

Utilisation de scanf_s en langage C

Utilisation de scanf_s en langage C

La fonction scanf_s est une version sécurisée du langage C pour lire des données formatées à partir d'une entrée standard. Contrairement à la fonction scanf non sécurisée, scanf_s valide l'entrée et protège contre les attaques par débordement de tampon.

Syntax

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

Parameters

  • format : Une chaîne de spécificateur de format spécifiant le type de données à lire. format:一个格式说明符字符串,指定要读取的数据类型。
  • ...:一个可变参数列表,提供要读取的数据的地址。

返回值

scanf_s 返回已成功读取的项目数。如果输入格式不正确或遇到错误,则返回 -1。

用法

要使用 scanf_s,请按照以下步骤操作:

  1. 包含 stdio.h 头文件。
  2. 在要读取数据的变量之前放置 & 符号。
  3. 确保格式说明符与要读取的数据类型匹配。
  4. 检查 scanf_s 的返回值以检测错误。

示例

<code class="c">#include <stdio.h>

int main()
{
    int age;
    char name[20];

    printf("输入你的年龄:");
    if (scanf_s("%d", &age) != 1)
    {
        printf("输入无效!\n");
        return 1;
    }

    printf("输入你的姓名:");
    if (scanf_s("%s", name, sizeof(name)) != 1)
    {
        printf("输入无效!\n");
        return 1;
    }

    printf("你好,%s!你的年龄是 %d。\n", name, age);

    return 0;
}</code>

注意事项

  • scanf_s 是一个安全版本,不会出现 scanf 中的缓冲区溢出问题。
  • scanf_s 返回已成功读取的项目数,而不是像 scanf 那样的匹配项目数。
  • 若要扫描字符串,请使用 %s 格式说明符并指定字符串的最大长度。
  • scanf_s 不支持 %n
  • ... : Une liste de paramètres variables fournissant l'adresse des données à lire.
🎜🎜🎜Valeur de retour🎜🎜🎜scanf_s Renvoie le nombre d'éléments qui ont été lus avec succès. Renvoie -1 si l'entrée est mal formée ou si une erreur est rencontrée. 🎜🎜🎜Utilisation🎜🎜🎜Pour utiliser scanf_s, suivez ces étapes : 🎜
    🎜Incluez le fichier d'en-tête stdio.h. 🎜🎜Placez les symboles & avant la variable à partir de laquelle vous souhaitez lire les données. 🎜🎜Assurez-vous que le spécificateur de format correspond au type de données que vous souhaitez lire. 🎜🎜Vérifiez la valeur de retour de scanf_s pour détecter les erreurs. 🎜
🎜🎜Exemple🎜🎜rrreee🎜🎜Notes🎜🎜🎜🎜scanf_s est une version sécurisée et ne souffre pas du problème de dépassement de tampon dans scanf. 🎜🎜scanf_s renvoie le nombre d'éléments lus avec succès, pas le nombre d'éléments correspondants comme scanf. 🎜🎜Pour scanner une chaîne, utilisez le spécificateur de format %s et spécifiez la longueur maximale de la chaîne. 🎜🎜scanf_s ne prend pas en charge le spécificateur de format %n. 🎜🎜

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