gets - pobiera łańcuch ze standardowego wejścia
(PRZESTARZAŁE)
Standardowa biblioteka C (
libc,
-lc)
#include <stdio.h>
[[deprecated]] char *gets(char *s);
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).
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.
Informacje o pojęciach używanych w tym rozdziale można
znaleźć w podręczniku
attributes(7).
Interfejs |
Atrybut |
Wartość |
gets() |
Bezpieczeństwo wątkowe |
MT-Safe |
C99, POSIX.1-2001.
LSB deprecates
gets(). POSIX.1-2008 marks
gets() obsolescent. ISO
C11 removes the specification of
gets() from the C language, and since
glibc 2.16, glibc header files don't expose the function declaration if the
_ISOC11_SOURCE feature test macro is defined.
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
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)
Autorami polskiego tłumaczenia niniejszej strony podręcznika
są: Przemek Borys <
[email protected]>, Andrzej Krzysztofowicz
<
[email protected]>, Robert Luberda <
[email protected]> i
Michał Kułach <
[email protected]>
Niniejsze tłumaczenie jest wolną dokumentacją.
Bliższe informacje o warunkach licencji można uzyskać
zapoznając się z
GNU
General Public License w wersji 3 lub nowszej. Nie przyjmuje się
ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy
zgłaszać na adres listy dyskusyjnej
[email protected]