GETS(3) 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 を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 として 返すか, エラーを返す。 April 4, 1993 1 GETS(3) GETS(3) 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) April 4, 1993 2