NAZWA

gets - pobiera łańcuch ze standardowego wejścia (PRZESTARZAŁE)

BIBLIOTEKA

Standardowa biblioteka C ( libc, -lc)

SKŁADNIA

#include <stdio.h>
[[deprecated]] 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.

ATRYBUTY

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
 

STANDARDY

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.

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().
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)

TŁUMACZENIE

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]