logo

fgets() і gets() мовою C

Для читання рядкового значення з пробілами ми можемо використовувати gets() або fgets() мовою програмування C. Тут ми побачимо різницю між gets() і fgets().

fgets()

Функція fgets() читає рядок із зазначеного потоку та зберігає його в рядок, на який вказує str. Він зупиняється, коли прочитано (n-1) символів, символ нового рядка або досягнуто кінця файлу, залежно від того, що станеться раніше.



Синтаксис

char * fgets  (char * str , int n , FILE * stream );>

Параметри

    str: покажчик на масив символів, куди копіюється прочитаний рядок. n: Максимальна кількість символів, які потрібно скопіювати в str (включно з кінцевим нульовим символом). *потік: покажчик на об’єкт FILE, який ідентифікує вхідний потік.

Примітка: stdin може використовуватися як аргумент для читання зі стандартного введення.

Повернене значення

  • Функція fgets() повертає вказівник на рядок, де зберігається вхід.

Особливості fgets()

  • Він відповідає деяким параметрам, таким як максимальна довжина, буфер і посилання на пристрій введення.
  • Це є безпечний використовувати, оскільки він перевіряє прив’язку масиву.
  • Він продовжує читати, доки не зустрінеться символ нового рядка або максимальна межа масиву символів.

Приклад fgets()

Скажімо, максимальна кількість символів становить 15, а довжина вхідних даних перевищує 15, але fgets() все одно прочитає лише 15 символів і надрукує їх.

C








проста програма на java

// C program to illustrate fgets()> #include> #define MAX 15> int> main()> {> >// defining buffer> >char> buf[MAX];> >// using fgets to take input from stdin> >fgets>(buf, MAX, stdin);> >printf>(>'string is: %s '>, buf);> >return> 0;> }>

>

>

Оскільки fgets() зчитує вхідні дані від користувача, нам потрібно забезпечити введення під час виконання.

 Input: Hello and welcome to techcodeview.com Output: string is: Hello and welc>

отримує()

Читає символи зі стандартного вводу (stdin) і зберігає їх як рядок C у str, доки не буде досягнуто символ нового рядка або кінець файлу.

  • Його небезпечно використовувати, оскільки він не перевіряє межі масиву.
  • Він використовується для читання рядків від користувача, доки символ нового рядка не зустрічається.

Синтаксис

char * gets ( char * str  );>

Параметри

    str: покажчик на блок пам’яті (масив char), де прочитаний рядок копіюється як рядок C.

Повернене значення

  • Функція повертає вказівник на рядок, де зберігаються вхідні дані.

Приклад gets()

Припустімо, що у нас є масив із 15 символів, а вхідні дані більше ніж 15 символів, gets() прочитає всі ці символи та збереже їх у змінній. Оскільки gets() не перевіряє максимальний ліміт вхідних символів, у будь-який час компілятор може повернути помилку переповнення буфера.

C++


мережі та Інтернету



// C program to illustrate> // gets()> #include> #define MAX 15> int> main()> {> >// defining buffer> >char> buf[MAX];> >printf>(>'Enter a string: '>);> >// using gets to take string from stdin> >gets>(buf);> >printf>(>'string is: %s '>, buf);> >return> 0;> }>

>

>

Оскільки gets() зчитує введення від користувача, нам потрібно надати введення під час виконання.

 Input : Hello and welcome to techcodeview.com Output : Hello and welcome to techcodeview.com>

Висновок

Функції fgets() і gets() можна використовувати для читання рядкового введення зі стандартного введення. Основна відмінність між функціями fgets() і gets() полягає в тому, що функція fgets() дозволяє користувачеві вказати максимальну кількість символів для читання, і ми також можемо змінити вхідний потік на будь-який файл у fgets().