fgets — функція стандартної бібліотеки C, призначена для зчитування рядка з потоку. Прототип функції описаний у заголовному файлі stdio.h. Він має вигляд:
char * fgets (char * str, int num, FILE * stream);
Агрументи:
- char * str — вказівник на буфер, в який зчитується рядок. Його максимальна довжина задається другим аргументом.
- int num — число, що обмежує кількість символів, які повинні бути зчитані.
- FILE * stream — вказівник на дескриптор файлу, з якого проводиться зчитування. Файл повинен бути відкритим.
У випадку успішного виконання функція повертає вказівник на зчитаний рядок, у разі невдачі — NULL.
Функція зчитує символи з потоку, доки не зустріне символ переводу рядка або кінця файлу, або доки не заповниться буфер. Максимальне число символів, які може зчитати fgets дорівнює N-1. У випадку, коли N-1 символ зчитано, а в потоці ще є символи, fgets поміщає 0 в N-ий байт буфера str і завершує роботу. У випадку, коли рядок вхідного потоку закінчився, а буфер str ще не заповнено, функція поміщає в буфер символ кінця рядка '\n', а після нього — 0.
Рекомендації використання
Функція fgets найбезпечніша функція зчитування в C. На відміну від функції gets одним із її аргументів є обмежувач числа символів, які потрібно зчитати, тому небезпека переповнення буферу набагато менша. Функцією fgets рекомендується зчитувати не тільки рядки з файлів, а й рядки з вхідного потоку stdin. У цьому випадку виклик функції має вигляд:
result = fgets(str, num, stdin);
Функцію fgets рекомендується використовувати і в тому випадку, коли з файла потрібно зчитати число. Оскільки програміст, який пише програму, не може бути впевненим, що в файлі, вказаному коритувачем, завжди буде правильна очікувана інформація, безпечно спочатку зчитати вхідний рядок як рядок, проаналізувати його, а потім зчитати потрібні числа уже з буфера.
Приклад
# include <stdio.h> # DEFINE MAX_LEN 100 int main() { FILE * pFile; char mystring [MAX_LEN +1]; pFile = fopen ("myfile.txt" , "r"); if (pFile == NULL) perror ("Error opening file"); else { fgets (mystring , MAX_LEN +1 , pFile); puts (mystring); fclose (pFile); } return 0; }
Див. також
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
fgets funkciya standartnoyi biblioteki C priznachena dlya zchituvannya ryadka z potoku Prototip funkciyi opisanij u zagolovnomu fajli stdio h Vin maye viglyad char fgets char str int num FILE stream Agrumenti char str vkazivnik na bufer v yakij zchituyetsya ryadok Jogo maksimalna dovzhina zadayetsya drugim argumentom int num chislo sho obmezhuye kilkist simvoliv yaki povinni buti zchitani FILE stream vkazivnik na deskriptor fajlu z yakogo provoditsya zchituvannya Fajl povinen buti vidkritim U vipadku uspishnogo vikonannya funkciya povertaye vkazivnik na zchitanij ryadok u razi nevdachi NULL Funkciya zchituye simvoli z potoku doki ne zustrine simvol perevodu ryadka abo kincya fajlu abo doki ne zapovnitsya bufer Maksimalne chislo simvoliv yaki mozhe zchitati fgets dorivnyuye N 1 U vipadku koli N 1 simvol zchitano a v potoci she ye simvoli fgets pomishaye 0 v N ij bajt bufera str i zavershuye robotu U vipadku koli ryadok vhidnogo potoku zakinchivsya a bufer str she ne zapovneno funkciya pomishaye v bufer simvol kincya ryadka n a pislya nogo 0 Rekomendaciyi vikoristannyaFunkciya fgets najbezpechnisha funkciya zchituvannya v C Na vidminu vid funkciyi gets odnim iz yiyi argumentiv ye obmezhuvach chisla simvoliv yaki potribno zchitati tomu nebezpeka perepovnennya buferu nabagato mensha Funkciyeyu fgets rekomenduyetsya zchituvati ne tilki ryadki z fajliv a j ryadki z vhidnogo potoku stdin U comu vipadku viklik funkciyi maye viglyad result fgets str num stdin Funkciyu fgets rekomenduyetsya vikoristovuvati i v tomu vipadku koli z fajla potribno zchitati chislo Oskilki programist yakij pishe programu ne mozhe buti vpevnenim sho v fajli vkazanomu korituvachem zavzhdi bude pravilna ochikuvana informaciya bezpechno spochatku zchitati vhidnij ryadok yak ryadok proanalizuvati jogo a potim zchitati potribni chisla uzhe z bufera Priklad include lt stdio h gt DEFINE MAX LEN 100 int main FILE pFile char mystring MAX LEN 1 pFile fopen myfile txt r if pFile NULL perror Error opening file else fgets mystring MAX LEN 1 pFile puts mystring fclose pFile return 0 Div takozhgets