C言語学習ポータル(無料版) 学習コンテンツ 関数リファレンス gets_s

🔧 入出力 ・ stdio.h ・ C11

gets_s の使い方

C言語 標準ライブラリ関数リファレンス(無料公開)

書式

char *gets_s(char *s, rsize_t n);

どんな関数か

標準入力から1行を安全に読み取る。旧来のgetsはバッファサイズを指定できず脆弱性の温床だったためC11で規格から削除され、代わりに境界チェック付きのこの関数かfgetsを使うことになった。 呼び出す際は境界を超えた入力があった場合の失敗処理も忘れずに書く必要がある。

使用例

#include <stdio.h>
int main(void) {
    char buf[32];
    printf("name? ");
    if (gets_s(buf, sizeof buf) == NULL) {
        return 1;
    }
    printf("hello, %s\n", buf);
    return 0;
}

つまずきやすい注意点

⚠️ gets_sはC11 Annex K(オプション機能)のため未実装の処理系も多い。実務では代わりにfgetsを使うのが定石。

アプリの関数リファレンスで引く(無料・登録不要) 関数一覧へ

gets_s と一緒に使う関数

fgetsストリームから最大n-1文字を1行読み取り、末尾に\0を付けてバッファへ格納する安全な入力関数。改行文字も含めて読み取る… scanf標準入力から書式に従って値を読み取り、対応する変数へ格納する。各変換指定子には&を付けたポインタを渡す必要があり、渡し忘…

同じ分類(入出力)の関数

fclose feof ferror fflush fgetc fgets fopen fprintf fputc fputs fread fscanf fseek ftell fwrite getchar

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る