名称
gets(), fgets() ― ストリームからの文字列の取得
構文
#include <stdio.h>
char *gets(char *s);
char *fgets(char *s, int n, FILE *stream);
廃止インタフェース
char *fgets_unlocked(char *s, int n, FILE *stream);
説明
| gets() | | ニューライン文字を読み取るか、または エンドオブファイル条件を見つけるまで、 s が示す配列に 標準入力ストリーム stdin から
文字を読み取ります。ニューライン文字は捨てられ文字列は null 文字で終了します。 |
| fgets() | | n-1 文字が読み取るか、ニューライン文字を読み取って s に転送するか、またはエンドオブファイル 条件を見つけるまで、 s が示す配列に ストリーム から文字を読み取ります。そして、文字列は null 文字で終了します。 |
廃止インタフェース
fgets_unlocked() は、ストリームから文字列を取得します。
アプリケーション使用法
gets() または fgets() がストリームに適用された後は、ストリームはバイト指向になります
(orientation(5) を参照)。
戻り値
実行が成功すると、 fgets(), fgets_unlocked() および gets() は s を返します。 ストリームが エンドオブファイルに到達すると、このストリームのエンドオブファイル
表示が設定され null ポインターが返されます。読み取りエラーが起こった場合は、このストリームのエラー表示が設定され、 errno はエラーを表示するように設定されて null ポインターが返されます。
ferror() および feof() はエラー状態とエンドオブファイル状態を区別するために使えます。
エラー
ストリーム 用バッファーにデータを読み込む必要があり、かつ次の条件のいずれかを満たす場合、 fgets(), fgets_unlocked() および gets() は実行できません。
| [EAGAIN] | | O_NONBLOCK フラグが ストリーム 実行元のファイル記述子用に設定され、プロセスが読み取り操作で
遅延する予定の場合。 |
| [EBADF] | | ストリーム 実行元のファイル記述子が、読み取りのためにオープンしている有効なファイル記述子ではない場合。 |
| [EINTR] | | 読み取り操作がシグナル受取りのために終了したとき、データが何も転送されないか、インプリメンテーションがこのファイルへ
の部分的な転送を報告しない場合。 |
| [EIO] | | プロセスがバックグランドプロセスのメンバーで制御ターミナルから読み取りを行なおうとしているとき、プロセスが SIGTTIN シグナルを無視、またはブロックしているか、あるいはプロセスのプロセスグループが
親なしである場合。 |
追加できる errno 値は実行元の read() 関数 read(2) 参照) で設定できます。
警告
fgets_unlocked() インタフェースは廃止され、現在では既存の DCE アプリケーションとの互換性を保つためにのみサポートされています。新しいマルチスレッドアプリケーションでは fgets() を使用してください。
参照
ferror(3S), flockfile(3S), fopen(3S), fread(3S), getc(3S),
puts(3S), scanf(3S), orientation(5), thread_safety(5)
標準準拠
gets(): AES, SVID2, SVID3, XPG2, XPG3,
XPG4, FIPS 151-2, POSIX.1, ANSI C
fgets(): AES, SVID2, SVID3, XPG2, XPG3,
XPG4, FIPS 151-2, POSIX.1, ANSI C