Jistě, začneme s článkem:
myFgets je jednou ze základních funkcí v C pro získávání vstupu od uživatele. Je součástí knihovny stdio a vyniká jako bezpečnější alternativa k ostatním protějškům, jako je scanf, díky své schopnosti zabránit přetečení vyrovnávací paměti.
#include <stdio.h> #define SIZE 100 int main() { char str[SIZE]; printf("Enter a string: "); if(fgets(str, SIZE, stdin) != NULL) { printf("You entered: "); puts(str); } return 0; }
Poté, co jsme začali s krátkým úvodem o myFgets, výše poskytnutý kód C využívá funkci myFgets pro získání vstupu řetězce od uživatele.
Jak myFgets funguje?
Funkce fgets je číst řetězec ze standardního vstupu (stdin), obvykle klávesnice. Funkce fgets není nepodobná jiným vstupním funkcím v C v požadavku na tři parametry: vyrovnávací paměť pro čtení vstupu, maximální velikost vyrovnávací paměti a vstupní proud, ze kterého se má číst. Konkrétně po přečtení řetězce fgets připojí na konec znak null ('').
Pochopení výše uvedeného kódu
Výše definovaná funkce začíná deklarováním řetězce (pole znaků) určité velikosti (SIZE). Poté vyzve uživatele k zadání řetězce. Po vstupu uživatele podmíněný příkaz zkontroluje, zda byla funkce fgets schopna přečíst řetězec. Pokud to bylo možné, pokračuje tiskem stejného řetězce zpět na obrazovku pomocí funkce puts.
Abychom pochopili vztah mezi fgets, velikostí vyrovnávací paměti a zabráněním přetečení vyrovnávací paměti, je důležité si uvědomit, že počet znaků přečtených fgets je o jeden menší než zadaná SIZE. To se provádí za účelem přizpůsobení znaku null na konci vstupu.
Relevantní knihovny a funkce
Z hlediska knihoven je stdio.h jednou z nejzákladnějších knihoven v C, která se používá pro vstupně/výstupní operace. Režim použití je tak jednoduchý, že jej vložíte na začátek kódu C pomocí direktivy #include.
Pokud jde o funkce použité v tomto kódu, fgets patří do této knihovny spolu s puts a printf. Zatímco fgets zkoumá, puts se používá k zápisu řetězce do stdout až do, ale bez nulového znaku. Funkce printf tvoří řetězec dat pro výstup na základě formátovacího řetězce a argumentů.
Vezměte prosím na vědomí, že pro bezpečný a efektivní přístup ke vstupnímu řetězci od uživatele má myFgets osvědčené výsledky v oblasti programování C tím, že omezuje velikost vstupu, a tak zabraňuje potenciálnímu přetečení vyrovnávací paměti.