GETS
Section: Linux Programmer's Manual (3)
Updated: 2017-09-15
Index
JM Home Page
roff page
名前
gets - 標準入力からの文字列を取得する (非推奨)
書式
#include <stdio.h>
char *gets(char *s);
説明
この関数は使用しないこと。
gets() は、改行文字か EOF までの 1行を stdin から読み込み s が指すバッファーに格納する
(末尾の改行文字や EOF はヌルバイト ('\0') に置き換えられる)。 バッファーオーバーランのチェックは行われない
(下記の「バグ」を参照)。
返り値
gets() は、成功すると s を返し、エラーや 1 文字も読み込んでいないのにファイルの終わりになった 場合に NULL を返す。
しかし、バッファーの行き過ぎのチェックが行われないため、この関数が返るという保証はない。
属性
この節で使用されている用語の説明については、 attributes(7) を参照。
インターフェース | 属性 | 値
|
gets()
| Thread safety | MT-Safe
|
準拠
C89, C99, POSIX.1-2001.
LSB は gets() を非推奨としている。
POSIX.1-2008 では gets() に廃止予定の印が付けられている。
ISO C11 では gets)() の規定が C 言語から削除されている。
glibc バージョン 2.16 以降では、機能検査マクロ _ISOC11_SOURCE が定義された
場合、glibc ヘッダーファイルでは gets)() の宣言が公開されない。
バグ
gets() は絶対に使用してはならない。 前もってデータを知ることなしに gets() が何文字読むかを知ることはできず、
gets() がバッファーの終わりを越えて書き込み続けるため、 gets() を使うのは極めて危険である。
これを利用してコンピュータのセキュリティが破られてきた。 代わりに fgets() を使うこと。
詳しい情報については、CWE-242 (別名 "Use of Inherently Dangerous Function"
(「本質的に危険な関数を使う」)) を参照。 http://cwe.mitre.org/data/definitions/242.html
で参照できる。
関連項目
read(2), write(2), ferror(3), fgetc(3), fgets(3),
fgetwc(3), fgetws(3), fopen(3), fread(3), fseek(3),
getline(3), getwchar(3), puts(3), scanf(3), ungetwc(3),
unlocked_stdio(3), feature_test_macros(7)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/ に書かれている。
Index
- 名前
-
- 書式
-
- 説明
-
- 返り値
-
- 属性
-
- 準拠
-
- バグ
-
- 関連項目
-
- この文書について
-
This document was created by
man2html,
using the manual pages.
Time: 03:33:30 GMT, December 05, 2022