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.