資料流的有效狀態和狀態轉換如下圖所示。

每個圓圈都表示穩定的狀態。 每條線則表示對資料流進行函式呼叫後可能發生的轉換。 有五組函式會造成狀態轉換。
前三個群組中的函式會在 stdio.h> 中<宣告:
位元組讀取函式:
fgetc、、、fgets、fscanfgetcfread、getchar、gets、 和scanfungetc位元組寫入函式:
fprintf、、、fputc、printfputcfwritefputs、、putchar、puts、 和vfprintfvprintf
其餘兩個群組中的函式會在 wchar.h> 中<宣告:
寬讀取函式:
fgetwc、、、fgetws、getwcfwscanf、ungetwcgetwchar、 和wscanf。寬寫函式:
fwprintf、、、fputwc、fputwsputwcharputwc、vfwprintf、vwprintf和 。wprintf
狀態圖表顯示,在多數的寫入與讀取作業之間,您必須呼叫其中一個位置函式:
如果數據流上的最後一個作業是寫入,則無法呼叫讀取函式。
除非該讀取作業設定檔尾指標,否則如果數據流上的最後一個作業是讀取,則您無法呼叫寫入函式。
最後,狀態圖表顯示位置作業永遠不會減少後續可能發生的有效函式呼叫數。