EN JA
GETS(3)
GETS(3) Linux Programmer's Manual GETS(3)

名前

fgetc, fgets, getc, getchar, gets, ungetc -文字と文字列の入力

書式


#include <stdio.h>
 

int fgetc(FILE * stream );


char *fgets(char *s, int size, FILE *stream);


int getc(FILE *stream);


int getchar(void);


char *gets(char *s);


int ungetc(int c, FILE *stream);

説明

fgetc() は、 stream から次の文字を unsigned char として読み、 int にキャストして返す。ファイルの終わりやエラーとなった場合は EOF を返す。

getc() は fgetc() と同様だが、 stream を複数回評価するマクロとして実装されているかもしれない。

getchar() は getc(stdin) と同じである。

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

fgets() は stream から最大で size - 1 個の文字を読み込み、 s が指すバッファに格納する。読み込みは EOF または改行文字を読み込んだ後で停止する。読み込まれた改行文字はバッファに格納される。終端の NULL バイト ('\0') が一つバッファの中の最後の文字の後に書き込まれる。

ungetc() は、後の read 操作で読めるように、 cunsigned char にキャストして stream に書き戻す。書き戻された文字は逆順に戻される;書き戻しとして保証されているのは、一文字だけである。

ここで述べた関数や stdio ライブラリの入力関数を同じ入力ストリームに対して互いに混ぜて使うことができる。

これらの処理を停止せずに行いたいときは、 unlocked_stdio(3) を参照のこと。

返り値

fgetc(), getc(), getchar() は、文字を unsigned char として読んで int にキャストして返す。ファイルの終わりやエラーの場合は EOF を返す。

gets() と fgets() は、成功すると s を返し、エラーや 1 文字も読み込んでいないのにファイルの終わりになった場合に NULL を返す。

ungetc() は成功すると c を返し、エラーの場合は EOF を返す。

準拠

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() を使うこと。

入力ストリームのファイルディスクリプタに対して、 stdio ライブラリの入力関数と、低レベル呼び出しの read(2) を混ぜて呼び出す事は勧められない。結果がどうなるかは分からず、おそらくあなたの望んでいる結果にはならないだろう。

関連項目

read(2), write(2), ferror(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.51 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。
2012-01-18 GNU