Partilhar via


E/S de fluxo

Essas funções processam dados em diferentes tamanhos e formatos, de caracteres únicos a grandes estruturas de dados. Eles também fornecem buffering, o que pode melhorar o desempenho. O tamanho padrão de um buffer de fluxo é 4K. Essas rotinas afetam apenas os buffers criados pelas 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 Utilização
clearerr, clearerr_s Indicador de erro claro para fluxo
fclose Fechar fluxo
_fcloseall Feche todos os fluxos abertos, exceto stdin, stdoute stderr
_fdopen, wfdopen Associar fluxo ao descritor de arquivo de arquivo aberto
feof Teste para o fim do arquivo em fluxo
ferror Teste de erro no fluxo
fflush Fluxo de liberação para buffer ou dispositivo de armazenamento
fgetc, fgetwc Ler caractere do fluxo (versões de função de getc e getwc)
_fgetchar, _fgetwchar Ler caractere de stdin (versões de função de getchar e getwchar)
fgetpos Obter indicador de posição de fluxo
fgets, fgetws Ler cadeia de caracteres do fluxo
_fileno Obter descritor de arquivo associado ao fluxo
_flushall Libere todos os fluxos para buffer ou dispositivo de armazenamento
fopen, _wfopen, fopen_s, _wfopen_s Fluxo aberto
fprintf, _fprintf_l, , fwprintf, _fwprintf_lfprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l Gravar dados formatados para transmitir
fputc, fputwc Escrever um caractere em um fluxo (versões de função de putc e putwc)
_fputchar, _fputwchar Escrever caractere para stdout (versões de função de putchar e putwchar)
fputs, fputws Gravar cadeia de caracteres para transmitir
fread Ler dados não formatados do fluxo
freopen, _wfreopen, freopen_s, _wfreopen_s Reatribuir FILE o ponteiro de fluxo a um novo arquivo ou dispositivo
fscanf, fwscanf, fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l Ler dados formatados do fluxo
fseek, _fseeki64 Mover a posição do arquivo para um determinado local
fsetpos Definir indicador de posição do fluxo
_fsopen, _wfsopen Fluxo aberto com compartilhamento de arquivos
ftell, _ftelli64 Obter a posição atual do arquivo
fwrite Gravar itens de dados não formatados para transmitir
getc, getwc Ler caractere do fluxo (versões de macro de fgetc e fgetwc)
getchar, getwchar Ler caractere de stdin (versões macro de fgetchar e fgetwchar)
_getmaxstdio Retorna o número de arquivos abertos simultaneamente permitido no nível de E/S de fluxo.
gets_s, _getws_s Leia a linha de stdin
_getw Ler binário int do fluxo
printf, _printf_l, , wprintf, _wprintf_lprintf_s, _printf_s_l, wprintf_s, _wprintf_s_l Gravar dados formatados em stdout
putc, putwc Gravar caractere em um fluxo (versões de macro de fputc e fputwc)
putchar, putwchar Escrever caractere em stdout (versões de macro de fputchar e fputwchar)
puts, _putws Escrever linha para transmitir
_putw Escrever binário int para transmitir
rewind Mover a posição do arquivo para o início do fluxo
_rmtmp Remover arquivos temporários criados por tmpfile
scanf, _scanf_l, , wscanf, _wscanf_lscanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l Ler dados formatados de stdin
setbuf Controle o buffer de fluxo
_setmaxstdio Defina um máximo para o número de arquivos abertos simultaneamente no nível de E/S de fluxo.
setvbuf Controle o buffer de fluxo e o tamanho do buffer
_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 dados formatados de um comprimento especificado a partir 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 da cadeia de caracteres
_tempnam, _wtempnam Gerar nome de arquivo temporário em determinado diretório
tmpfile, tmpfile_s Criar arquivo temporário
tmpnam, _wtmpnam, tmpnam_s, _wtmpnam_s Gerar nome de arquivo temporário
ungetc, ungetwc Empurrar o caractere de volta para o fluxo
_vcprintf, _vcwprintf, _vcprintf_s, _vcprintf_s_l, _vcwprintf_s, _vcwprintf_s_l Escreva dados formatados no console.
vfprintf, vfwprintf, vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l Gravar dados formatados para transmitir
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 erro padrão (apontado por stderr). Esses fluxos são direcionados para o console (teclado e tela) por padrão. Use freopen para redirecionar stdin, stdoutou stderr para um arquivo de disco ou um dispositivo.

Os arquivos abertos usando as rotinas de fluxo são armazenados em buffer por padrão. As stdout funções e stderr são liberadas sempre que estão cheias ou, se você estiver escrevendo em um dispositivo de caracteres, após cada chamada de biblioteca. Se um programa for encerrado de forma anormal, os buffers de saída podem não ser liberados, resultando em 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:

  • Link com o arquivo COMMODE. OBJ para definir um sinalizador de compromisso global. A configuração padrão do sinalizador global é n, para "no-commit".
  • Defina o sinalizador de modo como c com fopen ou _fdopen.

Qualquer arquivo aberto especificamente com o c sinalizador ou o n se comporta de acordo com o sinalizador, independentemente do estado do sinalizador global commit/no-commit.

Se o programa não fechar explicitamente um fluxo, o fluxo será fechado automaticamente quando o programa for encerrado. No entanto, você deve fechar um fluxo quando o programa terminar com ele, pois o número de fluxos que podem ser abertos ao mesmo tempo é limitado. Consulte _setmaxstdio para obter informações sobre este limite.

A entrada pode seguir a saída diretamente somente com uma chamada interveniente para fflush ou para uma função de posicionamento de arquivo (fseek, fsetpos, ou rewind). A entrada pode ser seguida pela saída sem uma chamada interveniente para uma função de posicionamento de arquivo, se a operação de entrada encontrar o final do arquivo.

Ver também

Entrada e saída
Rotinas de tempo de execução Universal C por categoria