ungetc, ungetwc
Przesuwa znak na strumień.
int ungetc(
int c,
FILE *stream
);
wint_t ungetwc(
wint_t c,
FILE *stream
);
Parametry
c
Znak musi zostać odłożony.stream
Wskaźnik, aby FILE struktury.
Wartość zwracana
Jeśli się powiedzie, każda z tych funkcji zwraca znak argument c*.* Jeśli c nie może być przesunięty lub jeśli nie ma charakteru została przeczytana, strumień wejściowy jest bez zmian i ungetc zwraca EOF; ungetwcreturns WEOF.Jeśli stream jest NULL, program obsługi nieprawidłowy parametr jest wywoływana, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, EOF lub WEOF jest zwracana i errno jest ustawiona na EINVAL.
Aby uzyskać informacje o tych i innych kodów błędów, zobacz _doserrno, errno, _sys_errlist i _sys_nerr.
Uwagi
ungetc Funkcja umieszcza znak c na stream i czyści wskaźnik końca pliku.Strumień musi być otwarty do odczytu.Kolejne operacja odczytu na stream rozpoczyna się od c*.* Próba pchania EOF na użyciu strumienia ungetc jest ignorowana.
Znaki umieszczone w strumieniu przez ungetc mogą zostać utracone, jeśli fflush, fseek, fsetpos, lub rewind nazywa się przed odczytaniem znak ze strumienia.Wskaźnik pozycji w pliku będzie miała wartość, jaką miała przed znaki były przesunięta.Zewnętrznej pamięci masowej odpowiadający strumień pozostaje niezmieniona.Zakończyło się pomyślnie ungetc wywołanie przeciw strumienia tekstu, wskaźnik pozycji w pliku jest nieokreślony, aż wszystkie znaki wciśnięty oparcia są odczytywane lub odrzucone.Na każdym pomyślnym ungetc wywołanie przeciwko strumień binarny, wskaźnik pozycji w pliku jest zmniejszany; Jeśli jego wartość była 0 przed wywołaniem, wartość jest niezdefiniowana po wywołaniu.
Wyniki są nieprzewidywalne Jeśli ungetc jest wywoływana dwa razy bez pozycjonowania pliku operacji między dwoma połączeniami lub odczytu.Po wywołaniu fscanf, wywołanie ungetc może zakończyć się niepowodzeniem, chyba że inny operacja odczytu (takich jak getc) została wykonana.Wynika to z fscanf nazywa się ungetc.
ungetwcjest ona szerokich znaków do ungetc.Jednak na każdym pomyślnym ungetwc wywołanie przeciwko strumień tekstowe lub binarne wartości wskaźnika pozycji w pliku jest nieokreślony aż wszystkie znaki wciśnięty oparcia są odczytywane lub odrzucone.
Funkcje te są wątków i Zablokuj poufnych danych podczas wykonywania.Wersja dla programu bez blokady, _ungetc_nolock, _ungetwc_nolock.
Tekst rodzajowy rutynowych mapowania
TCHAR.Rozpoczęto wykonywanie procedury h |
_UNICODE & _MBCS nie zdefiniowany |
_MBCS, definicja |
_UNICODE, definicja |
---|---|---|---|
_ungettc |
ungetc |
ungetc |
ungetwc |
Wymagania
Rozpoczęto wykonywanie procedury |
Wymaganego nagłówka |
---|---|
ungetc |
<stdio.h> |
ungetwc |
<stdio.h> lub <wchar.h> |
Konsola nie jest obsługiwana w Windows Store aplikacji.Związanych z konsolą, dojścia do strumienia standard stdin, stdout, i stderr, muszą być przeniesione, aby funkcje uruchomieniowej C mogą być użyte w Windows Store aplikacji.Aby uzyskać dodatkowe informacje o zgodności, zobacz zgodności we wprowadzeniu.
Przykład
// 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() );
}
Odpowiednik w programie .NET Framework
Nie dotyczy. Aby wywoływać funkcji C standardowej, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.