Для читання рядкового значення з пробілами ми можемо використовувати 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().