トップページ – C言語編 – 標準ライブラリのリファレンス(名前順)
トップページ – C言語編 – 標準ライブラリのリファレンス(ヘッダ別)
概要 |
標準入力から文字列を1行受け取る。 |
|
ヘッダ |
stdio.h (C11規格で削除) |
|
形式 |
char* gets(char* s); |
|
引数 |
s |
文字列を受け取る配列を指すポインタ。 |
戻り値 |
成功時は引数s がそのまま返される。 |
|
詳細 |
改行文字を読み取ったとき、あるいは、ファイルの終わりに達したときに読み込みを終える。改行文字を読み取った場合、それは配列に書き込まれない(この点は
fgets関数と異なる)。配列に格納された最後の文字の後ろに、ヌル文字(‘\0’)
が付加される。 「注意」で触れているように、この関数は本質的に危険であり使用すべきではないため、C11規格で削除された。Visual Studio では削除されている。 |
|
注意 |
この関数は、受け取る文字数を指定できないため、バッファオーバーフローを起こす危険があるうえ、その対策方法がまったくない。したがって、絶対に使ってはならない。 代替手段として、fgets関数を使う。C11規格では、gets_s関数があればそれを使う(この関数はオプション扱いである)。なければやはり fgets関数を使う。 |
|
使用例 |
実行結果:
|
|
関連 |
この関数は危険性があるので、fgets関数などに置き換えることを考えるべきである。C11規格では、存在するならば gets_s関数を検討すると良い。 |
|
解説章 |
本ページはアフィリエイトプログラムによる収益を得ています。
以下のリンクから商品を購入されると、Programming Place
管理者に紹介料が支払われています。
(
の直後、)
の直前に空白を入れない)return 0;
を削除(C言語編全体でのコードの統一)VisualStudio 2015 の対応終了。
「NULL」という表記を「ヌルポインタ」に修正。
詳しい動作を追記。
「VisualC++」という表現を「VisualStudio」に統一。
新規作成。
Programming Place Plus のトップページへ
はてなブックマーク に保存 | Pocket に保存 | Facebook でシェア |
X で ポスト/フォロー | LINE で送る | noteで書く |
RSS | 管理者情報 | プライバシーポリシー |