logo

функція fgets() у C

У програмуванні C, обробка введення і вихід діяльність має важливе значення. Fgets() є однією з багатьох функцій, доступних для введення . За допомогою цієї надійної функції розробники можуть безпечно й точно зчитувати інформацію з певного потоку. У цій статті ми розглянемо ins і аути з fgets() , перебираючи його синтаксис, додаток, зразок коду , і очікувані результати .

The функція fgets(). , скорочення від 'файл отримати рядок' , часто використовується для читання рядка з файлового потоку або стандартний вхід (stdin) . Він забезпечує більш безпечну заміну застарілому функція gets(). , який раніше використовувався, але тепер створює загрозу безпеці. Функція fgets() пропонує засоби для обмеження кількості прочитаних символів і ефективно обробляє символи нового рядка.

рядок java порожній

Синтаксис fgets() такий:

 char *fgets(char *str, int size, FILE *stream); 

Параметри розбиті таким чином:

str: Це посилання на масив символів (рядок), який буде використовуватися для зберігання вхідних даних.

розмір: Загальна кількість символів (включаючи нульовий символ '0' ), які можна прочитати.

потік: Вказівний пристрій на вхідний файловий потік або stdin що fgets() буде читати з.

Щоб краще зрозуміти, як функціонує fgets(), розглянемо приклад:

приклад:

 #include int main() { char input[100]; printf('Enter a string: '); fgets(input, sizeof(input), stdin); printf('You entered: %s', input); return 0; } 

Вихід:

 Enter a string: Hello, World! You entered: Hello, World! Enter a string: This is a very long string that exceeds the limit of the input buffer. You entered: This is a very long string that exceeds the limit of the input buffer. If a user types an empty text by simply pressing the Enter key: Enter a string: You entered: 

Пояснення:

У наведеному вище прикладі ми починаємо з включення відповідного файлу заголовка, 'stdio.h' . Після цього вхідний рядок визначається як вхідний масив символів розміром 100.

Використання функція printf(). , програма просить користувача ввести рядок. Після того, stdin використовується як вхідний потік , і fgets() використовується з введенням як рядок призначення, sizeof(введення) і максимальний розмір для читання. Після цього програма використовує printf() щоб вивести введений рядок.

Fgets() функція може читати і зберегти символ нового рядка 'n' якщо він з’являється до досягнення максимального розміру. Це дає змогу визначити, чи був вхідний рядок прочитаний повністю чи обрізаний через обмеження простору.

приклад:

Використовуючи змінений фрагмент коду, ви можете використовувати метод strcspn(). до видалити в новий рядок символ із вхідного рядка:

 #include #include int main() { char input[100]; printf('Enter a string: '); fgets(input, sizeof(input), stdin); input[strcspn(input, '
')] = ''; // Remove the newline character printf('You entered: %s', input); return 0; } 

Вихід:

рядок java indexof
 Enter a string: Hello World You entered: Hello World 

Пояснення:

Довжина підрядка, що складається із символів, яких немає в наданому наборі символів, визначається функція strcspn(). . У цьому випадку нульовий символ '0' використовується для заміни символу нового рядка після визначення 'n' як набір символів для пошуку.

Висновок:

На завершення читання вхідні рядки із потоків файлів або стандартного введення за допомогою C метод fgets(). є надійним і безпечним. Це корисний інструмент для регламентованої обробки введених користувачем даних, оскільки він дозволяє вибрати максимальний розмір для введення та обробляє символи нового рядка.

Застарілі функція gets(). замінюється більш безпечним функція fgets(). , який виправляє недоліки безпеки, викликані переповнення буфера . Він гарантує, що вхідний рядок не стає більшим за допустимий, уникаючи потенційних проблем з пошкодженням пам’яті.

Наданий приклад коду показує, як використовувати fgets() правильно фіксувати введення користувача та видаляти символ нового рядка, якщо він з’являється. У ньому підкреслюється, наскільки важливо враховувати обмеження введення та мати справу із символами нового рядка для забезпечення точної обробки рядків.

Розробники можуть покращити безпеку та надійність своїх програм на C за допомогою fgets() . Вони можуть уникнути несподіваної поведінки та потенційних порушень безпеки, спричинених великими вхідними даними, визначивши максимальний розмір для вхідних даних.

Початківцям програмістам на C варто ознайомитися fgets() та інструкції з його використання для забезпечення безпечної та ефективної обробки введених даних. Розробники, які знають про цю функцію, можуть створити більш надійне та безпечне програмне забезпечення, яке захищає від уразливостей, пов’язаних із введенням даних, які часто зустрічаються.