E/S de fluxo
Essas funções processam os dados em diferentes tamanhos e formatos, desde caracteres únicos até grandes estruturas de dados. Elas também fornecem o armazenamento em buffer, o que pode melhorar o desempenho. O tamanho padrão de um buffer de fluxo é de 4 K. Essas rotinas afetam apenas os buffers criados por rotinas de biblioteca de tempo de execução e não têm efeito nos buffers criados pelo sistema operacional.
Rotinas de E/S de fluxo
Rotina | Usar |
---|---|
clearerr , clearerr_s |
Limpar o indicador de erro do fluxo |
fclose |
Fechar o fluxo |
_fcloseall |
Feche todos os fluxos abertos, exceto stdin , stdout e stderr |
_fdopen , wfdopen |
Associar o fluxo ao descritor de arquivo do arquivo aberto |
feof |
Testar o final do arquivo no fluxo |
ferror |
Testar o erro no fluxo |
fflush |
Liberar o fluxo no buffer ou dispositivo de armazenamento |
fgetc , fgetwc |
Ler caracteres do fluxo (versões de função de getc e getwc ) |
_fgetchar , _fgetwchar |
Ler caracteres de stdin (versões de função de getchar e getwchar ) |
fgetpos |
Obter o indicador de posição do fluxo |
fgets , fgetws |
Ler a cadeia de caracteres do fluxo |
_fileno |
Obter o descritor de arquivo associado ao fluxo |
_flushall |
Liberar todos os fluxos no buffer ou dispositivo de armazenamento |
fopen , _wfopen , fopen_s , _wfopen_s |
Abrir fluxo |
fprintf , _fprintf_l , fwprintf , _fwprintf_l , fprintf_s , _fprintf_s_l , , fwprintf_s , , _fwprintf_s_l |
Gravar os dados formatados no fluxo |
fputc , fputwc |
Gravar um caractere em um fluxo (versões de função de putc e putwc ) |
_fputchar , _fputwchar |
Gravar um caractere em stdout (versões de função de putchar e putwchar ) |
fputs , fputws |
Gravar a cadeia de caracteres no fluxo |
fread |
Ler dados não formatados no fluxo |
freopen , _wfreopen , freopen_s , _wfreopen_s |
Reatribuir o ponteiro de fluxo FILE para o novo arquivo ou dispositivo |
fscanf , fwscanf , fscanf_s , _fscanf_s_l , fwscanf_s , , _fwscanf_s_l |
Ler dados formatados no fluxo |
fseek , _fseeki64 |
Mover posição do arquivo para um determinado local |
fsetpos |
Definir o indicador de posição do fluxo |
_fsopen , _wfsopen |
Abrir um fluxo com compartilhamento de arquivos |
ftell , _ftelli64 |
Obter a posição atual do arquivo |
fwrite |
Gravar itens de dados não formatados no fluxo |
getc , getwc |
Ler caracteres do fluxo (versões macro de fgetc e fgetwc ) |
getchar , getwchar |
Ler caracteres de stdin (versões macro de fgetchar e fgetwchar ) |
_getmaxstdio |
Retorna o número permitido de arquivos abertos simultaneamente no nível de E/S do fluxo. |
gets_s , _getws_s |
Ler linha de stdin |
_getw |
Ler binário int no fluxo |
printf , _printf_l , wprintf , _wprintf_l ,printf_s , _printf_s_l , , wprintf_s , _wprintf_s_l |
Gravar dados formatados em stdout |
putc , putwc |
Gravar caracteres em um fluxo (versões macro de fputc e fputwc ) |
putchar , putwchar |
Gravar caracteres em stdout (versões macro de fputchar e fputwchar ) |
puts , _putws |
Gravar linha no fluxo |
_putw |
Gravar binário int em fluxo |
rewind |
Mover a posição do arquivo para o começo do fluxo |
_rmtmp |
Remover arquivos temporários criados por tmpfile |
scanf , _scanf_l , wscanf , _wscanf_l ,scanf_s , _scanf_s_l , , wscanf_s , _wscanf_s_l |
Ler dados formatados de stdin |
setbuf |
Controlar o buffer de fluxo |
_setmaxstdio |
Definir o máximo de arquivos abertos simultaneamente no nível de E/S de fluxo. |
setvbuf |
Controlar o tamanho do buffer e o buffer de fluxo |
_snprintf , _snwprintf , _snprintf_s , _snprintf_s_l , _snwprintf_s , , _snwprintf_s_l |
Gravar dados formatados de comprimento especificado na cadeia de caracteres |
_snscanf , _snwscanf , _snscanf_s , _snscanf_s_l , _snwscanf_s , , _snwscanf_s_l |
Leia os dados formatados de um comprimento especificado do fluxo de entrada padrão. |
sprintf , swprintf , sprintf_s , _sprintf_s_l , swprintf_s , , _swprintf_s_l |
Gravar dados formatados na cadeia de caracteres |
sscanf , swscanf , sscanf_s , _sscanf_s_l, swscanf_s , _swscanf_s_l |
Ler dados formatados na cadeia de caracteres |
_tempnam , _wtempnam |
Gerar o nome de arquivo temporário no diretório fornecido |
tmpfile , tmpfile_s |
Criar arquivo temporário |
tmpnam , _wtmpnam , tmpnam_s , _wtmpnam_s |
Gerar nome de arquivo temporário |
ungetc , ungetwc |
Enviar caractere por push para o fluxo |
_vcprintf , _vcwprintf , _vcprintf_s , _vcprintf_s_l , _vcwprintf_s , , _vcwprintf_s_l |
Gravar os dados formatados no console. |
vfprintf , vfwprintf , vfprintf_s , _vfprintf_s_l , vfwprintf_s , , _vfwprintf_s_l |
Gravar os dados formatados no fluxo |
vprintf , vwprintf , vprintf_s , _vprintf_s_l , vwprintf_s , , _vwprintf_s_l |
Gravar dados formatados em stdout |
_vsnprintf , _vsnwprintf , vsnprintf_s , _vsnprintf_s , _vsnprintf_s_l , _vsnwprintf_s , , _vsnwprintf_s_l |
Gravar dados formatados de comprimento especificado no buffer |
vsprintf , vswprintf , vsprintf_s , _vsprintf_s_l , vswprintf_s , , _vswprintf_s_l |
Gravar dados formatados no buffer |
Quando um programa começa a execução, o código de inicialização abre automaticamente vários fluxos: entrada padrão (apontada por stdin
), saída padrão (apontada por stdout
) e o erro padrão (apontado por stderr
). Esses fluxos são direcionados ao console (tela e teclado) por padrão. Use freopen
para redirecionar stdin
, stdout
ou stderr
para um arquivo de disco ou um dispositivo.
Por padrão, os arquivos abertos usando as rotinas de fluxo serão armazenados em buffer. As stdout
funções and stderr
são liberadas sempre que estiverem cheias ou, se você estiver gravando em um dispositivo de caractere, após cada chamada de biblioteca. Se um programa for encerrado de forma anormal, talvez os buffers de saída não esvaziem, resultando na perda de dados. Use fflush
ou _flushall
para garantir que o buffer associado a um arquivo especificado seja liberado para o sistema operacional ou que todos os buffers abertos sejam liberados. O sistema operacional pode armazenar dados em cache antes de gravá-los no disco. O recurso de confirmação em disco garante que o conteúdo do buffer liberado não seja perdido se houver uma falha do sistema.
Há duas maneiras de confirmar o conteúdo do buffer no disco:
Vincular com o arquivo COMMODE.OBJ para definir um sinalizador de confirmação global. A configuração padrão do sinalizador global é
n
, para "sem confirmação".Defina o sinalizador de modo como
c
comfopen
ou_fdopen
.
Qualquer arquivo aberto especificamente com o sinalizador c
ou n
se comportará de acordo com o sinalizador, independentemente do estado do sinalizador de confirmação/sem confirmação global.
Se o programa não fechar explicitamente um fluxo, o fluxo será fechado automaticamente quando o programa for encerrado. No entanto, é necessário fechar um fluxo quando seu programa deixar de usá-lo, pois o número de fluxos que podem ser abertos ao mesmo tempo é limitado. Confira _setmaxstdio
para mais informações sobre esse limite.
A entrada pode seguir a saída diretamente apenas com uma chamada intermediária para fflush
ou para uma função de posicionamento de arquivos (fseek
, fsetpos
ou rewind
). A entrada pode ser seguida pela saída sem uma chamada intermediária para uma função de posicionamento de arquivo, se a operação de entrada encontrar o final do arquivo.
Confira também
Entrada e saída
Rotinas de runtime C universais por categoria