Estados de fluxo
Os estados válidos e transições de estado para um fluxo são mostrados na figura a seguir.
Cada um dos círculos indica um estado estável. Cada uma das linhas denota uma transição que pode ocorrer como resultado de uma chamada de função que opera no fluxo. Cinco grupos de funções podem causar transições de estado.
Funções nos três primeiros grupos são declaradas no <stdio.h>:
As funções
fgetc
de leitura de byte: ,fgets
,fscanf
fread
getchar
getc
,gets
, , escanf
ungetc
As funções
fprintf
de gravação de byte: ,fputc
,fwrite
fputs
putc
printf
, ,putchar
, ,puts
, , evfprintf
vprintf
Funções em dois grupos restantes são declaradas no <wchar.h>:
As funções de leitura ampla:
fgetwc
,fgetws
,fwscanf
,getwchar
getwc
, ,ungetwc
ewscanf
,As funções de gravação largas:
fwprintf
,fputwc
,fputws
,putwc
putwchar
, ,vfwprintf
,vwprintf
ewprintf
,
O diagrama de estado mostra que você deve chamar uma das funções de posição entre a maioria das operações de leitura e gravação:
Você não pode chamar uma função de leitura se a última operação no fluxo foi uma gravação.
Você não poderá chamar uma função de gravação se a última operação no fluxo tiver sido uma leitura, a menos que essa operação de leitura defina o indicador de fim de arquivo.
Por fim, o diagrama de estado mostra que uma operação de posição nunca diminui o número de chamadas de função válido que pode seguir.