NAZWA¶
fgetc, fgets, getc, getchar, gets, ungetc - wprowadzanie znaków i
łańcuchów znakowych
SKŁADNIA¶
#include <stdio.h>
int fgetc(FILE *stream);
char *fgets(char *s, int size, FILE *stream);
int getc(FILE *stream);
int getchar(void);
char *gets(char *s);
int ungetc(int c, FILE *stream);
OPIS¶
Uwaga! To tłumaczenie może być nieaktualne!
fgetc() odczytuje następny znak ze
stream i zwraca go jako
rzutowanie
unsigned char na
int, lub
EOF w przypadku
końca pliku albo błędu.
getc() jest równoważne
fgetc() z tym wyjątkiem,
że może być zaimplementowane jako makro, które wylicza
stream więcej niż raz.
getchar() jest równoważne
getc(stdin).
gets() odczytuje linię z
stdin do bufora wskazywanego przez
s aż do kończącego znaku nowej linii lub
EOF,
który jest zastępowany przez
'\0'. Nie jest sprawdzane
przepełnienie bufora (zobacz
BŁĘDY poniżej).
fgets() odczytuje co najwyżej o jeden mniej niż
size
znaków ze
stream i umieszcza je w buforze wskazywanym przez
s. Odczyt kończy się po napotkaniu
EOF lub znaku nowej
linii. Jeśli odczytany zostanie znak nowej linii, jest on przechowywany w
buforze. Po ostatnim znaku w buforze jest umieszczany
'\0'.
ungetc() odkłada
c z powrotem do
stream, rzutowane na
unsigned char, o ile jest to możliwe dla następnych operacji
odczytu. Odłożone znaki będą zwracane w odwrotnej
kolejności; tylko jedno pomyślne odłożenie jest
zagwarantowane.
Wywołania opisanych tu funkcji mogą być mieszane między
sobą jak i z wywołaniami innych funkcji wejściowych z
biblioteki
stdio operujących na tym samym strumieniu
wejściowym.
Informacje o nieblokujących odpowiednikach znajdują się w
unlocked_stdio(3).
WARTOŚĆ ZWRACANA¶
fgetc(),
getc() i
getchar() zwracają znak odczytany
jako rzutowanie
unsigned char na
int lub
EOF w przypadku
końca pliku lub błędu.
gets() i
fgets() zwracają
s w przypadku
pomyślnego zakończenia, a
NULL w przypadku błędu
oraz gdy wystąpi koniec pliku, a nie zostanie odczytany żaden znak.
ungetc() zwraca
c w przypadku pomyślnego zakończenia, a
EOF w przypadku błędu.
ZGODNE Z¶
ANSI - C, POSIX.1
BŁĘDY¶
Nigdy nie należy używać
gets(). Funkcja ta jest
szczególnie niebezpieczna w użyciu, ponieważ bez
znajomości danych z góry nie jest możliwe określenie, ile
znaków
gets() przeczyta, i ponieważ
gets() będzie
kontynuować umieszczanie znaków po przekroczeniu końca bufora.
Było to wykorzystywane do łamania zabezpieczeń komputerów.
Zamiast
gets() należy korzystać z
fgets().
Nie jest zalecane mieszanie wywołań funkcji wejściowych z
biblioteki
stdio z niskopoziomowymi wywołaniami
read() dla
deskryptora pliku stowarzyszonego ze strumieniem wejściowym; wyniki
będą nieokreślone i z dużym prawdopodobieństwem nie
takie, jakich oczekiwano.
ZOBACZ TAKŻE¶
read(2),
write(2),
ferror(3),
fopen(3),
fread(3),
fseek(3),
puts(3),
scanf(3),
unlocked_stdio(3)
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu
Tłumaczenia Manuali i
może nie być aktualne. W razie
zauważenia różnic między powyższym opisem a
rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o
zapoznanie się z oryginalną (angielską) wersją strony
podręcznika za pomocą polecenia:
- man --locale=C 3 gets
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
znaleźć pod adresem
http://sourceforge.net/projects/manpages-pl/.