Estados de fluxo
Os estados válidos, e as transições de estado, para um fluxo são mostrados na figura a seguir.
Cada um dos turnos denota um estado estável. Cada uma das linhas denota uma transição que pode ocorrer como resultado de uma chamada de função que funcionam no fluxo. Cinco grupos de funções podem causar transições de estado.
As funções nos primeiros três grupos são <declaradas em stdio.h:>
O byte ler funções — fgetc, fgets, fread, fscanf, getc, getchar, obtém, scanf, e ungetc
A gravação de bytes funções — fprintf, fputc, fputs, fwrite, printf, putc, putchar, coloca, vfprintf, e vprintf
As funções em dois grupos restantes são declaradas <em wchar.h:>
As funções largas de leitura — fgetwc, fgetws, fwscanf, getwc, getwchar, ungetwc, e, wscanf
As funções largas de gravação — fwprintf, fputwc, fputws, putwc, putwchar, vfwprintf, vwprintf, e, wprintf
O diagrama de estado mostra que você deve chamar uma das funções da posição entre a maioria de gravação e de operações de leitura:
Você não pode chamar uma função de leitura se a última operação no fluxo era uma gravação.
Você não pode chamar uma função de gravação se a última operação no fluxo era uma leitura, a menos que a operação de leitura definir o indicador de participante de Arquivo.
Finalmente, o diagrama de estado mostra que uma operação de posição nunca diminui o número de chamadas de função válidos que podem seguir.