fgetc, getc
From cppreference.net
|
定義先ヘッダ
<stdio.h>
|
||
|
int
fgetc
(
FILE
*
stream
)
;
|
(1) | |
|
int
getc
(
FILE
*
stream
)
;
|
(2) | |
1)
指定された入力ストリームから次の文字を読み取ります。
2)
fgetc
と同様ですが、
getc
がマクロとして実装されている場合、ストリームを複数回評価する可能性があるため、対応する引数は副作用を持つ式であってはなりません。
目次 |
パラメータ
| stream | - | 文字を読み取るストリーム |
戻り値
成功時は、取得した文字を unsigned char から int に変換した値を返します。 失敗時は EOF を返します。
失敗がEOF(end-of-file)状態によって引き起こされた場合、追加で eof インジケータを設定します( feof() を参照)。これは stream に対して行われます。失敗が他のエラーによって引き起こされた場合、 error インジケータを設定します( ferror() を参照)。これも stream に対して行われます。
例
このコードを実行
#include <stdio.h> #include <stdlib.h> int main(void) { const char* fname = "/tmp/unique_name.txt"; // or tmpnam(NULL); int is_ok = EXIT_FAILURE; FILE* fp = fopen(fname, "w+"); if (!fp) { perror("File opening failed"); return is_ok; } fputs("Hello, world!\n", fp); rewind(fp); int c; // note: int, not char, required to handle EOF while ((c = fgetc(fp)) != EOF) // standard C I/O file reading loop putchar(c); if (ferror(fp)) puts("I/O error when reading"); else if (feof(fp)) { puts("End of file is reached successfully"); is_ok = EXIT_SUCCESS; } fclose(fp); remove(fname); return is_ok; }
出力例:
Hello, world! End of file is reached successfully
参考文献
- C23規格 (ISO/IEC 9899:2024):
-
- 7.21.7.1 fgetc関数 (p: TBD)
-
- 7.21.7.5 getc関数 (p: TBD)
- C17規格 (ISO/IEC 9899:2018):
-
- 7.21.7.1 fgetc関数 (p: 240-241)
-
- 7.21.7.5 getc関数 (p: 242)
- C11標準 (ISO/IEC 9899:2011):
-
- 7.21.7.1 fgetc関数 (p: 330)
-
- 7.21.7.5 getc関数 (p: 332)
- C99標準 (ISO/IEC 9899:1999):
-
- 7.19.7.1 fgetc関数 (p: 296)
-
- 7.19.7.5 getc関数 (p: 297-298)
- C89/C90標準 (ISO/IEC 9899:1990):
-
- 4.9.7.1 fgetc関数
-
- 4.9.7.5 getc関数
関連項目
|
stdinから文字を読み込む
stdin
(関数) |
|
|
(C11で削除)
(C11)
|
stdinから文字列を読み込む
stdin
(関数) |
|
ファイルストリームに文字を書き込む
(関数) |
|
|
ファイルストリームに文字を戻す
(関数) |
|
|
C++ documentation
for
fgetc
,
getc
|
|