ungetc, ungetwc

Pressiona uma volta de caracteres no fluxo.

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

Parâmetros

  • c
    Caractere a ser empurrado.

  • stream
    Ponteiro para a estrutura de FILE .

Valor de retorno

Se com êxito, cada uma dessas funções retorna o argumento cde caracteres*.* Se c não pode ser novamente empurrado ou se nenhum caractere foi ler, o fluxo de entrada é retorna EOFinalteradas e de ungetc ; retorna WEOFde ungetwc .Se stream é NULL, o manipulador inválido do parâmetro é invocado, como descrito em Validação de parâmetro.Se a execução é permitida continuar, EOF ou WEOF são retornados e errno é definido como EINVAL.

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

Comentários

A função de ungetc pressiona a trás de c de caracteres em stream e limpa o indicador de final de Arquivo.O fluxo deve estar aberto para leitura.Uma operação de leitura em subsequente começa de stream com c*.* Uma tentativa de empurrar EOF no fluxo que usa ungetc será ignorada.

Os caracteres colocados no fluxo por ungetc podem ser apagada se fflush, fseek, fsetpos, ou rewind são chamados antes que o caractere seja lido de fluxo.O indexador de arquivo posição tinha o valor que tinha antes que os caracteres foram empurrado novamente.O armazenamento externo que corresponde ao fluxo é inalterado.Em um chamada com êxito de ungetc em um fluxo de texto, o indexador de arquivo posição é não especificado até que todos os caracteres de enviado por push- volta são lidos ou descartados.Em cada chamada com êxito de ungetc em um fluxo binário, o indexador de arquivo posição é decrescido; se seu valor foi 0 antes que uma chamada, o valor é indefinido após a chamada.

Os resultados são imprevisíveis se ungetc é chamado duas vezes sem uma operação de leitura ou arquivo de posicionamento entre as duas chamadas.Após uma chamada a fscanf, uma chamada a ungetc pode falhar a menos que outra operação de leitura (como getc) é executada.Isso ocorre porque fscanf próprio chama ungetc.

ungetwc é uma versão de largo- caractere de ungetc.No entanto, em cada chamada com êxito de ungetwc em um texto ou um fluxo binário, o valor do indexador de arquivo posição é não especificado até que todos os caracteres de enviado por push- volta são lidos ou descartados.

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

Mapeamentos da rotina de Genérico- texto

Rotina de TCHAR.H

_UNICODE & _MBCS não definidos

_MBCS definido

_UNICODE definido

_ungettc

ungetc

ungetc

ungetwc

Requisitos

Rotina

Cabeçalho necessário

ungetc

<stdio.h>

ungetwc

<stdio.h> ou <wchar.h>

O console não é suportado em aplicativos de Windows Store .Identificadores padrões de fluxo associadas ao console, stdin, stdout, e stderr, devem ser redirecionada antes que as funções de tempo de execução das C pode usar em aplicativos de Windows Store .Para informações extras de compatibilidade Compatibilidade na introdução, consulte.

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() );
}
  

Equivalência do .NET Framework

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

Consulte também

Referência

Fluxo de i/O

getc, getwc

putc, putwc