|
HOME > Linux Tips ( 目次 ) > Linux コマンド 一覧表 > g > gets - ライブラリコールの説明 gets - ライブラリコールの説明 - Linux コマンド集 一覧表名前fgetc, fgets, getc, getchar, gets, ungetc - 文字と文字列の入力 書式
#include <stdio.h> 説明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. LSB では gets()は非推奨である。 バグgets()は絶対に使用してはならない。 前もってデータを知ることなしに gets()が何文字読むかを知ることはできず、 gets()がバッファの終わりを越えて書き込み続けるため、 gets()を使うのは極めて危険である。 これを利用してコンピュータのセキュリティが破られてきた。 代わりに fgets()を使うこと。 入力ストリームのファイルディスクリプタに対して、 stdioライブラリの入力関数と、低レベル呼び出しの read()を混ぜて呼び出す事は勧められない。 結果がどうなるかは分からず、おそらくあなたの 望んでいる結果にはならないだろう。 関連項目
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)
|
|