Provided by: manpages-ja-dev_0.5.0.0.20131015+dfsg-2_all bug

名前

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