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.