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 を1度以上評価するマクロとして実装されるかもしれない。

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

gets() は stdin から改行文字あるいは EOF (これらは '\0' に置き換えられる)までの1行を s で示されるバッファに読み込む。 バッファのオーバーランはチェックされない(下の バグ を見よ)。

fgets() は n (訳注: size の間違いか?) よりも1文字以上少ない文字を stream から読み込み、 s で示されるバッファに書き込む. 読み込みは EOF または改行文字を読み込んだ後終わる。 改行文字は読まれるとバッファに書き込まれる。 '\0' 文字がバッファの中の最後の文字の後に1文字書き込まれる。

ers ungetc() は後のread操作で読めるように、 c を unsigned char にキャストして stream に書き戻す。

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

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

gets() と fgets() は成功すると s を返し, ファイルの終りあるいはエラーの場合 NULL を返す。

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

準拠
ANSI - C, POSIX.1

バグ
y y データを知ることなしに gets() が何文字読むかを先に知る事はできず、 gets() がバッファの終りを越えて書き込み続けるため、使用は大変危険である。 この事はコンピュータのセキュリティを破るのに使われてきた。 代わりに fgets() を使え。

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

関連項目
read(2), write(2), fopen(3), fread(3), scanf(3), puts(3), fseek(3), ferror(3)