Provided by: manpages-ja-dev_0.5.0.0.20210215+dfsg-1_all bug

名前

       gets - 標準入力からの文字列を取得する (非推奨)

書式

       #include <stdio.h>

       char *gets(char *s);

説明

       この関数は使用しないことgets()  は、改行文字か EOF までの 1行を stdin から読み込み s が指すバッファーに格納する (末尾の改行文字や
       EOF  はヌルバイト  ('\0')  に置き換えられる)。  バッファーオーバーランのチェックは行われない  (下記の「バ
       グ」を参照)。

返り値

       gets() は、成功すると s を返し、エラーや 1 文字も読み込んでいないのにファイルの終わりになった 場合に NULL
       を返す。 しかし、バッファーの行き過ぎのチェックが行われないため、この関数が返るという保証はない。

準拠

       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 プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告
       に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。

GNU                                                2014-01-24                                            GETS(3)