🔧 入出力 ・ stdio.h ・ C11
gets_s の使い方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 と一緒に使う関数fclose
feof
ferror
fflush
fgetc
fgets
fopen
fprintf
fputc
fputs
fread
fscanf
fseek
ftell
fwrite
getchar
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。