有效状态和状态转换,以流,如下图所示。
每个圆形表示一个稳定状态。每一行表示可能会由于函数调用对流的转换。函数的五个组可能导致状态转换。
函数前三组中声明中 stdio.h:
该字节读取功能 — fgetc、 fgets、 fread、 fscanf、 getc、 getchar、 获取、 scanf和 ungetc
字节编写函数 ( fprintf、 fputc、 fputs、 fwrite、 printf、 putc、 putchar、 放置、 vfprintf和 vprintf
函数对仍然的两个组中声明中 wchar.h:
宽读取的功能和 fgetwc、 fgetws、 fwscanf、 getwc、 getwchar、 ungetwc和 wscanf,
宽编写函数 ( fwprintf、 fputwc、 fputws、 putwc、 putwchar、 vfwprintf、 vwprintf和 wprintf,
状态图表示,必须调用一个在大多数读写操作之间的位置功能:
,如果在流中的最后一个操作是编写,则不能调用一个读取的功能。
无法调用编写一个函数,则在流中的最后一个操作是读取,,除非该读取操作将文件结尾指示符。
最后,状态图表示,位置运算永远不能减少遵循有效的数目函数调用。