fgets
|
定義済みヘッダー
<stdio.h>
|
||
|
char
*
fgets
(
char
*
str,
int
count,
FILE
*
stream
)
;
|
(C99まで) | |
|
char
*
fgets
(
char
*
restrict
str,
int
count,
FILE
*
restrict
stream
)
;
|
(C99以降) | |
指定されたファイルストリームから最大 count - 1 文字を読み取り、それらを str が指す文字配列に格納します。改行文字が見つかった場合(この場合 str はその改行文字を含みます)、またはファイル終端に達した場合に解析は停止します。バイトが読み取られ、エラーが発生しなかった場合、 str に書き込まれた最後の文字の直後の位置にnull文字を書き込みます。
目次 |
パラメータ
| str | - | char配列の要素へのポインタ |
| count | - | 書き込む最大文字数(通常は str の長さ) |
| stream | - | データを読み取るファイルストリーム |
戻り値
str 成功時、失敗時はnullポインタ。
ファイル終端条件が発生した場合、 eof インジケータを stream に設定する( feof() 参照)。これはバイトが読み取られなかった場合にのみ失敗と見なされ、その場合はヌルポインタが返され、 str が指す配列の内容は変更されない(すなわち、先頭バイトがナル文字で上書きされない)。
失敗が他の何らかのエラーによって引き起こされた場合、 エラー インジケータを設定します( ferror() を参照)。 stream に対して設定されます。 str が指す配列の内容は不定です(null終端されていない可能性もあります)。
注記
POSIXはさらに要求する 、 fgets が errno を設定することを、読み取りエラーが発生した場合に。
標準仕様は 不明確 ですが、 count <= 1 の場合、一般的な実装では
- count count < 1 の場合、何もせず、エラーを報告
- count count == 1 の場合、
-
- 一部の実装は何も行わず、エラーを報告します。
- 他の実装は何も読み込まず、 str [ 0 ] にゼロを格納し、成功を報告します。
例
#include <stdio.h> #include <stdlib.h> int main(void) { FILE* tmpf = tmpfile(); fputs("Alan Turing\n", tmpf); fputs("John von Neumann\n", tmpf); fputs("Alonzo Church\n", tmpf); rewind(tmpf); char buf[8]; while (fgets(buf, sizeof buf, tmpf) != NULL) printf("\"%s\"\n", buf); if (feof(tmpf)) puts("End of file reached"); }
出力:
"Alan Tu" "ring " "John vo" "n Neuma" "nn " "Alonzo " "Church " End of file reached
参考文献
- C23規格 (ISO/IEC 9899:2024):
-
- 7.21.7.2 fgets関数 (p: 未定)
- C17規格 (ISO/IEC 9899:2018):
-
- 7.21.7.2 fgets関数 (p: 241)
- C11標準 (ISO/IEC 9899:2011):
-
- 7.21.7.2 fgets関数 (p: 331)
- C99規格 (ISO/IEC 9899:1999):
-
- 7.19.7.2 fgets関数 (p: 296)
- C89/C90標準 (ISO/IEC 9899:1990):
-
- 4.9.7.2 fgets関数
関連項目
|
(C11)
(C11)
(C11)
|
stdin
またはファイルストリーム、バッファから書式化された入力を読み込む
(関数) |
|
(C11で削除)
(C11)
|
stdin
から文字列を読み込む
(関数) |
|
ファイルストリームに文字列を書き込む
(関数) |
|
|
(動的メモリTR)
|
区切り文字/行末までストリームから自動的にサイズ変更されるバッファに読み込む
(関数) |
|
C++ドキュメント
for
fgets
|
|