GETS

Section: Linux Programmer's Manual (3)
Updated: 2017-09-15
Index JM Home 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/ に書かれている。

関連キーワード

バッファー   gets   非推奨   stdio   改行   チェック   バグ   危険   格納   末尾   ヌルバイト   オーバーラン   下記   成功   保証   用語   allbox   インターフェース   属性   Thread   safety   廃止   予定   規定   言語

Linux マニュアル 一覧

関連するコマンド・関数

fgetc.3   fgets.3   getc.3   getchar.3   ungetc.3   strcpy.3
 

Index

名前
書式
説明
返り値
属性
準拠
バグ
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:39:05 GMT, October 11, 2026