Provided by: manpages-pl-dev_0.5-1_all
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
fgetc() odczytuje następny znak ze stream i zwraca go jako rzutowanie unsigned char na int lub zwraca 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 bajt null ('\0'). Nie jest sprawdzane przepełnienie bufora (zobacz BŁĘDY IMPLEMENTACJI 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 kończący bajt null ('\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ą odczytany znak jako unsigned char rzutowany na int lub zwracają EOF w przypadku błędu. gets() i fgets() zwracają s w przypadku pomyślnego zakończenia lub NULL w przypadku błędu lub wystąpienia końca pliku przed odczytaniem jakiegokolwiek znaku. ungetc() zwraca c w przypadku pomyślnego zakończenia lub EOF w przypadku błędu.
ZGODNE Z
C89, C99, POSIX.1-2001. LSB uznaje gets() za wychodzącą z użycia. POSIX.1-2008 oznacza ją jako przestarzałą. ISO C11 usuwa definicję gets() z języka C i od wersji 2.16 biblioteki glibc pliki nagłówkowe nie zawierają deklaracji tej funkcji, jeśli zdefiniowane jest makro _ISOC11_SOURCE.
BŁĘDY IMPLEMENTACJI
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(2) 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), fgetwc(3), fgetws(3), fopen(3), fread(3), fseek(3), getline(3), getwchar(3), puts(3), scanf(3), ungetwc(3), unlocked_stdio(3), feature_test_macros(7)
O STRONIE
This page is part of release 3.52 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.
TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Przemek Borys (PTM) <pborys@dione.ids.pl>, Andrzej Krzysztofowicz (PTM) <ankry@green.mf.pg.gda.pl> i Robert Luberda <robert@debian.org>. Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 3.52 oryginału.