fgetcのヘルプ・マニュアル
日本語 英語
fgetc --help
man fgetc
GETS(3) Linux Programmer’s Manual GETS(3)
名前
fgetc, fgets, getc, getchar, gets, ungetc - 文字と文字列の入力
書式
#include
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 は '\0' に置き換えられる)。バッ フ
ァ・オーバーランのチェックは行われない (下記の「バグ」を参照)。
fgets() は stream から最大で size - 1 個の文字を読み込み、 s が指すバッ
ファに格納する。読み込みは EOF または改行文字を読み込んだ後で停止する。
読 み込まれた改行文字はバッファに格納される。 '\0' 文字が一つバッファの
中の最後の文字の後に書き込まれる。
ungetc() は、後の read 操作で読めるように、 c を unsigned 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() の仕様が削除されている。
バグ
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)
GNU 2008-08-06 GETS(3)
GETS(3) Linux Programmer’s Manual GETS(3)
NAME
fgetc, fgets, getc, getchar, gets, ungetc - input of characters and
strings
SYNOPSIS
#include
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);
DESCRIPTION
fgetc() reads the next character from stream and returns it as an
unsigned char cast to an int, or EOF on end of file or error.
getc() is equivalent to fgetc() except that it may be implemented as a
macro which evaluates stream more than once.
getchar() is equivalent to getc(stdin).
gets() reads a line from stdin into the buffer pointed to by s until
either a terminating newline or EOF, which it replaces with '\0'. No
check for buffer overrun is performed (see BUGS below).
fgets() reads in at most one less than size characters from stream and
stores them into the buffer pointed to by s. Reading stops after an
EOF or a newline. If a newline is read, it is stored into the buffer.
A '\0' is stored after the last character in the buffer.
ungetc() pushes c back to stream, cast to unsigned char, where it is
available for subsequent read operations. Pushed-back characters will
be returned in reverse order; only one pushback is guaranteed.
Calls to the functions described here can be mixed with each other and
with calls to other input functions from the stdio library for the same
input stream.
For non-locking counterparts, see unlocked_stdio(3).
RETURN VALUE
fgetc(), getc() and getchar() return the character read as an unsigned
char cast to an int or EOF on end of file or error.
gets() and fgets() return s on success, and NULL on error or when end
of file occurs while no characters have been read.
ungetc() returns c on success, or EOF on error.
CONFORMING TO
C89, C99, POSIX.1-2001. LSB deprecates gets(). POSIX.1-2008 removes
the specification of gets().
BUGS
Never use gets(). Because it is impossible to tell without knowing the
data in advance how many characters gets() will read, and because
gets() will continue to store characters past the end of the buffer, it
is extremely dangerous to use. It has been used to break computer
security. Use fgets() instead.
It is not advisable to mix calls to input functions from the stdio
library with low-level calls to read(2) for the file descriptor associ-
ated with the input stream; the results will be undefined and very
probably not what you want.
SEE ALSO
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)
COLOPHON
This page is part of release 3.22 of the Linux man-pages project. A
description of the project, and information about reporting bugs, can
be found at http://www.kernel.org/doc/man-pages/.
GNU 2008-08-06 GETS(3)