gets

Autres langues

Langue: pl

Autres versions - même langue

Version: 1993-04-04 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

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