États de flux
Les états valides, et les transitions d'état, pour un flux de données sont affichés dans l'illustration suivante.
Chacun des cercles indique un état stable. Chaque ligne indique une transition qui peut se produire suite à un appel de fonction qui traite le flux de données. Cinq groupes de fonctions peuvent provoquer des transitions d'état.
Les fonctions dans les trois premiers groupes sont déclarées dans <stdio.h :>
Les fonctions de lecture d'octet — fgetc, fgets, fread, fscanf, getc, getchar, obtient, scanf, et ungetc
Les fonctions d'écriture d'octet — fprintf, fputc, fputs, fwrite, printf, putc, putchar, met, vfprintf, et vprintf
Les fonctions de position — fflush, fseek, fsetpos, et rembobinage
Les fonctions des deux groupes restants sont déclarées dans <wchar.h :>
Les fonctions de lecture large — fgetwc, fgetws, fwscanf, getwc, getwchar, ungetwc, et, wscanf
Les fonctions d'écriture large — fwprintf, fputwc, fputws, putwc, putwchar, vfwprintf, vwprintf, et, wprintf
Le diagramme d'état indique que vous devez appeler l'une des fonctions de position entre la plupart des opérations de lecture et d'écriture :
Vous ne pouvez pas appeler une fonction de lecture si la dernière opération sur le flux est une écriture.
Vous ne pouvez pas appeler une fonction d'écriture si la dernière opération sur le flux est une lecture, sauf si cette opération de lecture définit l'indicateur de fin de fichier.
Enfin, le diagramme d'état indique qu'une opération de position ne diminue jamais le nombre d'appels de fonction valides qui peuvent suivre.