fgetc, fgets, getc, getchar, ungetc -
文字と文字列の入力
#include <stdio.h>
int fgetc(FILE *stream);
char *fgets(char *s, int size, FILE *stream);
int getc(FILE *stream);
int getchar(void);
int ungetc(int c, FILE *stream);
fgetc() は、
stream
から次の文字を
unsigned char
として読み、
int
にキャストして返す。ファイルの終わりやエラーとなった場合は
EOF を返す。
getc() は
fgetc()
と同様だが、
stream
を複数回評価するマクロとして実装されているかもしれない。
getchar() は
getc(stdin)
と同じである。
fgets() は
stream から最大で
size - 1
個の文字を読み込み、
s
が指すバッファーに格納する。読み込みは
EOF
または改行文字を読み込んだ後で停止する。
読み込まれた改行文字はバッファーに格納される。
終端のヌルバイト ('\0')
が一つバッファーの中の最後の文字の後に書き込まれる。
ungetc() は、後の read
操作で読めるように、
c を
unsigned char
にキャストして
stream
に書き戻す。
書き戻された文字は逆順に戻される;
書き戻しとして保証されているのは、一文字だけである。
ここで述べた関数や
stdio
ライブラリの入力関数を同じ入力ストリームに対して互いに混ぜて使うことができる。
これらの処理を停止せずに行いたいときは、
unlocked_stdio(3)
を参照のこと。
fgetc(),
getc(),
getchar()
は、文字を
unsigned char
として読んで
int
にキャストして返す。ファイルの終わりやエラーの場合は
EOF を返す。
fgets() は、成功すると
s
を返し、エラーや 1
文字も読み込んでいないのにファイルの終わりになった
場合に NULL を返す。
ungetc() は成功すると
c
を返し、エラーの場合は
EOF を返す。
この節で使用されている用語の説明については、
attributes(7) を参照。
インターフェース |
属性 |
値 |
fgetc(), fgets(), getc(), getchar(),
ungetc() |
Thread safety |
MT-Safe |
POSIX.1-2001, POSIX.1-2008, C89, C99.
入力ストリームのファイルディスクリプターに対して、
stdio
ライブラリの入力関数と、低レベル呼び出しの
read(2)
を混ぜて呼び出す事は勧められない。
結果がどうなるかは分からず、おそらくあなたの
望んでいる結果にはならないだろう。
read(2),
write(2),
ferror(3),
fgetwc(3),
fgetws(3),
fopen(3),
fread(3),
fseek(3),
getline(3),
gets(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/
に書かれている。