Condividi tramite


ungetc, ungetwc

Respinge un carattere nel flusso.

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

Parametri

  • c
    Carattere da inserire.

  • stream
    Puntatore alla struttura FILE.

Valore restituito

Se eseguita correttamente, ognuna di queste funzioni restituisce l'argomento cdel carattere*.* Se c non può essere inserito a o se nessun carattere è stato letto, il flusso di input viene restituito EOFdi ungetc e invariati, restituisce WEOFdi ungetwc.Se stream è NULL, viene richiamato il gestore di parametro non valido, come descritto in Convalida dei parametri.Se l'esecuzione è consentita per continuare, EOF o WEOF viene restituito e errno è impostato su EINVAL.

Per ulteriori informazioni su questi, e altri, codici di errore vedere _doserrno, errno, _sys_errlist, and _sys_nerr .

Note

La funzione di ungetc respinge il carattere c su stream e rimuove l'indicatore di fine file.Il flusso deve essere aperto per leggere.Un'operazione di lettura successiva in stream inizia con c*.* Un tentativo di inserire EOF nel flusso utilizzando ungetc viene ignorato.

I caratteri inseriti nel flusso da ungetc possono essere eliminati se fflush, fseek, fsetpos, o rewind viene chiamato prima che il carattere essere letto dal flusso.L'indicatore posizione del valore in cui si trovava prima che i caratteri siano spinti indietro.L'archiviazione esterna che corrisponde al flusso resterà invariata.In una corrispondenza chiamata di ungetc in un flusso di testo, l'indicatore posizione non è specificato fino a leggere o rimuovere tutti i caratteri spinti indietro.In ogni corrispondenza chiamata di ungetc in un flusso binario, l'indicatore posizione diminuisce, se il valore è 0 prima di una chiamata, il valore sia definita dopo la chiamata.

I risultati sono imprevedibili se ungetc viene chiamato due volte senza un'operazione di posizionamento dei file o letti tra le due chiamate.Dopo che una chiamata a fscanf, una chiamata a ungetc può avere esito negativo a meno che un'altra operazione di lettura (come getc) sia stata eseguita.Questo perché fscanf stesso chiama ungetc.

ungetwc è una versione a caratteri di tipo "wide" di ungetc.Tuttavia, ogni corrispondenza chiamata di ungetwc su un testo o un flusso binario, il valore della posizione non è specificato fino a leggere o rimuovere tutti i caratteri spinti indietro.

Queste funzioni sono dati riservati di blocco e thread-safe durante l'esecuzione.Per una versione non bloccante, vedere _ungetc_nolock, _ungetwc_nolock.

Mapping di routine a Testo generico

TCHAR.H routine

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_ungettc

ungetc

ungetc

ungetwc

Requisiti

Routine

Intestazione obbligatoria

ungetc

<stdio.h>

ungetwc

<stdio.h> o <wchar.h>

La console non è supportata nelle applicazioni di Windows Store.L'handle standard del flusso associate alla console, stdin, stdoute stderr, devono essere reindirizzati prima di funzioni di runtime del linguaggio C possono essere utilizzate nelle applicazioni di Windows Store.Per ulteriori informazioni sulla compatibilità, vedere Compatibilità nell'introduzione.

Esempio

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

Equivalente .NET Framework

Non applicabile. Per chiamare la funzione standard C, utilizzare PInvoke. Per ulteriori informazioni, vedere Esempi di Invocazione della Piattaforma.

Vedere anche

Riferimenti

Flusso I/O

getc, getwc

putc, putwc