NAZWA¶
gets - pobiera łańcuch ze standardowego wejścia
(PRZESTARZAŁE)
SKŁADNIA¶
#include <stdio.h>
char *gets(char *s);
OPIS¶
Proszę nigdy nie używać tej funkcji.
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).
WARTOŚĆ ZWRACANA¶
gets() zwraca
s w przypadku pomyślnego zakończenia
lub NULL w przypadku błędu lub wystąpienia końca
pliku przed odczytaniem jakiegokolwiek znaku. Jednak z powodu braku
sprawdzenia przed przepełnieniem bufora nie ma gwarancji, że
funkcja kiedykolwiek powróci.
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().
Więcej informacji znajduje się w CWE-242 (aka "Use of
Inherently Dangerous Function") at
http://cwe.mitre.org/data/definitions/242.html
ZOBACZ TAKŻE¶
read(2),
write(2),
ferror(3),
fgetc(3),
fgets(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¶
Angielska wersja tej strony pochodzi z wydania 3.71 projektu Linux
man-pages. Opis projektu, informacje dotyczące zgłaszania
błędów, oraz najnowszą wersję
oryginału można znaleźć pod adresem
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>, Robert Luberda
<robert@debian.org> i Michał Kułach
<michal.kulach@gmail.com>.
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.71 oryginału.