Compartilhar via


ungetc, ungetwc

Envia um caractere de volta para o fluxo.

int ungetc(
   int c,
      FILE *stream 
);
wint_t ungetwc(
   wint_t c,
   FILE *stream 
);

Parâmetros

  • c
    Caractere ser transferido.

  • stream
    Ponteiro para FILE estrutura.

Valor de retorno

Se bem-sucedida, cada uma dessas funções retornará o caractere argumento c*.* If c não pode ser enviado novamente ou, se nenhum caractere foi lida, o fluxo de entrada está inalterado e ungetc Retorna EOF; ungetwc Retorna WEOF. If stream é NULL, o manipulador de parâmetro inválido é chamado, conforme descrito em Validação de parâmetro. Se a execução for permitida para continuar, EOF ou WEOF será retornado e errno é definido como EINVAL.

Para obter informações sobre estes e outros códigos de erro, consulte _doserrno, errno, _sys_errlist e _sys_nerr.

Comentários

The ungetc função envia o caractere c volta para stream e o indicador de limpa a participante de arquivo. O fluxo deve ser em aberto para leitura.Ler um subseqüentes operação em stream começa com c*.* Uma tentativa de push EOF para o fluxo usando ungetc é ignorado.

Caracteres colocados no fluxo por ungetc pode ser apagado se fflush, fseek, fsetpos, ou rewind é chamado antes que o caractere é ler a partir do fluxo. O indicador de posição do arquivo terá o valor que tinha antes que os caracteres foram enviados de volta.O armazenamento externo correspondente ao fluxo não é alterada.Em um bem-sucedida ungetc telefonar de um fluxo de texto, o indicador de posição do arquivo não for especificado até que todos os caracteres back enviados são ler ou descartados. Em cada bem-sucedidaungetc telefonar de um fluxo binário, o indicador de posição do arquivo é diminuída; se o valor 0 antes de uma telefonar, o valor é indefinido após a telefonar.

Os resultados serão imprevisíveis se ungetc é chamado duas vezes sem uma operação de posicionamento de arquivos entre as duas chamadas de leitura ou. Após uma telefonar para fscanf, uma telefonar para ungetc pode falhar, a menos que outra operação de leitura (sistema autônomo getc) tiver sido executado. Isso ocorre porque o fscanf se chama ungetc.

ungetwc é uma versão de caractere largo da ungetc. No entanto, em cada bem-sucedidaungetwc telefonar de um fluxo de texto ou binário, o valor do indicador de posição do arquivo não for especificado até que back empurrada todos os caracteres são lidos ou descartados.

Essas funções são thread-safe e bloquear dados confidenciais durante a execução.Para obter uma versão sem bloqueio, consulte _ungetc_nolock, _ungetwc_nolock.

Mapeamentos de rotina de texto genérica

Rotina TCHAR.H

_UNICODE & _MBCS não definido

_MBCS definido

_UNICODE definido

_ungettc

ungetc

ungetc

ungetwc

Requisitos

Rotina

Cabeçalho necessário

ungetc

<stdio.h>

ungetwc

<stdio.h> ou <wchar.h>

Para obter informações adicionais compatibilidade, consulte Compatibilidade na introdução.

Exemplo

// crt_ungetc.c
// This program first converts a character
// representation of an unsigned integer to an integer. If
// the program encounters a character that is not a digit,
// the program uses ungetc to replace it in the  stream.
//

#include <stdio.h>
#include <ctype.h>

int main( void )
{
   int ch;
   int result = 0;

   // Read in and convert number:
   while( ((ch = getchar()) != EOF) && isdigit( ch ) )
      result = result * 10 + ch - '0';    // Use digit.
   if( ch != EOF )
      ungetc( ch, stdin );                // Put nondigit back.
   printf( "Number = %d\nNext character in stream = '%c'", 
            result, getchar() );
}

521a

Number = 521 Next character in stream = 'a'

Equivalente do NET Framework

Não aplicável. Para telefonar a função C padrão, use PInvoke. Para obter mais informações, consulte Exemplos de invocação de plataforma.

Consulte também

Referência

Fluxo de E/S

getc, getwc

putc, putwc