ストリームの状態
更新 : 2007 年 11 月
ストリームの有効な状態と状態の遷移は、次のとおりです。
それぞれの丸は安定した状態を示します。線は、ストリームに対して操作を実行する関数を呼び出した結果として起こる状態の遷移を示します。状態の遷移を起こす関数として、5 つのグループがあります。
最初の 3 つのグループに属する関数は <stdio.h> に宣言されます。
バイト読み込み関数 - fgetc、fgets、fread、fscanf、getc、getchar、gets、scanf、および ungetc
バイト書き込み関数 - fprintf、fputc、fputs、fwrite、printf、putc、putchar、puts、vfprintf、および vprintf
残る 2 つのグループに属する関数は <wchar.h> に宣言されます。
ワイド読み込み関数 - fgetwc、fgetws、fwscanf、getwc、getwchar、ungetwc、および wscanf
ワイド書き込み関数 - fwprintf、fputwc、fputws、putwc、putwchar、vfwprintf、vwprintf、および wprintf
状態図は、大部分の書き込み操作と読み込み操作の間で位置関数を 1 つ呼び出す必要があることを示しています。
ストリームに対する最後の操作が書き込みであった場合、読み込み関数を呼び出すことはできません。
ストリームに対する最後の操作が読み込みであった場合、書き込み関数を呼び出すことはできません。ただし、その読み込み操作によって EOF (End-Of-File) インジケータが設定される場合を除きます。
最後に、状態図は位置操作によって後続の有効な関数呼び出しの数が減少しないことを示しています。