😸

[C] gets 関数

に公開

機能

gets関数は、標準入力から1行の文字列を取得し、指定した配列に格納する関数です。[1]

使用例

Hello World と表示する

\n は改行を表す エスケープシーケンス[2]

コード

char buf[100];
gets(buf);
printf("%s\n", buf);
全文
#include <stdio.h>
void main() {
    char buf[100];
    gets(buf); // ← セキュリティ上、安全ではありません
    printf("%s\n", buf);
}

実行結果

(※ユーザーが Hello World と入力した場合)
Hello World

入力した値を変数から表示する

コード

char str[256];
gets(str);
printf("入力値:%s\n", str);
全文
#include <stdio.h>
void main() {
    char str[256];
    gets(str); // ← 非推奨。バッファオーバーフローのおそれがあります
    printf("入力値:%s\n", str);
}

実行結果

(※ユーザーが ABC123 と入力した場合)
入力値:ABC123

注意:
gets関数はバッファサイズを指定できず、安全性に重大な問題があります。代わりにfgets関数の使用を推奨します。[3]

脚注
  1. getsは「安全」でないためC11以降で削除されました。実用ではfgets関数の習得・使用を推奨します。 ↩︎

  2. 改行やタブなど、画面に表示されない制御文字のこと。 ↩︎

  3. getsは入力が大きすぎると配列を超えて書き込み、「バッファオーバーフロー」により危険な状態を作ります。 ↩︎

Discussion