logo

функция fgets() в C

В C програмиране, обработка вход и изход дейности е от съществено значение. Fgets() е една от многото функции, които са достъпни за вход . С помощта на тази стабилна функция разработчиците могат сигурно и прецизно да четат информация от даден поток. В тази статия ще разгледаме инс и аутове на fgets() , преминавайки през него синтаксис, приложение, примерен код , и очаквани резултати .

The функция fgets(). , съкращение от 'file get string' , често се използва за четене на низ от файлов поток или стандартен вход (stdin) . Той осигурява по-сигурен заместител на остарелите gets() функция , който е бил използван преди, но сега представлява проблем за сигурността. Функцията fgets() предлага средство за ограничаване на броя на прочетените знаци и ефективно обработва символите за нов ред.

произволно число в java

Синтаксисът за fgets() е както следва:

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

Параметрите са разбити, както следва:

улица: Това е препратка към масива от символи (низ), който ще се използва за съхраняване на входа.

размер: Общият брой знаци (включително нулев знак '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() се използва с вход като целеви низ, размер на (вход) и максимален размер за четене. След това програмата използва printf() за извеждане на въведения низ.

Fgets() функция може Прочети и спаси символът за нов ред 'н' ако се появи преди достигането на максималния размер. Това дава възможност да се разбере дали входният ред е бил прочетен изцяло или съкратен поради ограничения на пространството.

Пример:

Използвайки модифицирания кодов фрагмент, можете да използвате метод 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; } 

Изход:

numpy сумиране
 Enter a string: Hello World You entered: Hello World 

Обяснение:

Дължината на подниза, съставен от знаци, които не са в предоставения набор от знаци, се определя от функция strcspn(). . В този случай, нулев знак '0' се използва за заместване на знака за нов ред след посочване 'н' като набор от знаци за търсене.

Заключение:

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

Отхвърленото gets() функция се заменя с по-сигурното функция fgets(). , който коригира пропуски в сигурността, причинени от препълване на буфера . Той гарантира, че входният низ не става по-голям от позволеното, избягвайки потенциални проблеми с повреда на паметта.

Предоставеният примерен код показва как да използвате fgets() правилно, за да улови въведеното от потребителя и да премахне знака за нов ред, ако се появи. Той подчертава колко важно е да се вземат предвид входните ограничения и да се работи със знаци за нов ред, за да се гарантира точна обработка на низове.

Разработчиците могат да подобрят сигурността и устойчивостта на своите C програми с fgets() . Те могат да избегнат неочаквано поведение и потенциални пробиви в сигурността, предизвикани от големи входове, като определят максимален размер за вход.

Амбициозните C програмисти трябва да се запознаят с fgets() и неговите инструкции за използване, за да се гарантира сигурна и ефективна обработка на въвеждане. Разработчиците, които са наясно с тази функция, могат да създадат по-надежден и сигурен софтуер, който предпазва от уязвимости, свързани с въвеждането, които често се срещат.