ホームページ  >  記事  >  バックエンド開発  >  C言語でのscanf_sの使用法

C言語でのscanf_sの使用法

下次还敢
下次还敢オリジナル
2024-04-30 00:33:17379ブラウズ

scanf_s は、バッファ オーバーフロー攻撃を防ぐためにフォーマットされたデータを読み取る C 言語の安全な関数です。その構文は、scanf_s(format, ...) です。使用手順: ヘッダー ファイル stdio.h をインクルードします。変数の前に & 記号を追加します。形式指定子がデータ型と一致していることを確認してください。戻り値をチェックしてエラーを検出します。

C言語でのscanf_sの使用法

C 言語での scanf_s の使用法

scanf_s 関数は、標準入力からフォーマットを読み取るために C 言語で使用されます。データの安全なバージョン。安全でない scanf 関数とは異なり、scanf_s は入力を検証し、バッファ オーバーフロー攻撃から保護します。

構文

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

パラメータ

  • 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 形式指定子をサポートしていません。

以上がC言語でのscanf_sの使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。