logo

Funkce fgets() v C

V programování C, manipulace vstup a výstup činnosti je zásadní. Fgets() je jednou z mnoha funkcí, které jsou k dispozici vstup . S pomocí této robustní funkce mohou vývojáři bezpečně a přesně číst informace z daného streamu. V tomto článku budeme zkoumat ins a výstupy z fgets() , jít přes jeho syntaxe, aplikace, ukázkový kód , a očekávané výsledky .

The funkce fgets(). , zkratka pro 'file get string' , se často používá ke čtení řetězce ze souborového toku nebo standardní vstup (stdin) . Poskytuje bezpečnější náhradu za zastaralé funkce get(). , který byl dříve používán, ale nyní představuje bezpečnostní problém. Funkce fgets() nabízí prostředky k omezení počtu přečtených znaků a efektivně zpracovává znaky nového řádku.

Syntaxe pro fgets() je následující:

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

Parametry jsou rozděleny následovně:

Fibonacci série v Javě

str: Je to odkaz na pole znaků (řetězec), které bude použito k uložení vstupu.

velikost: Celkový počet znaků (včetně nulový znak '0' ), které lze číst.

proud: Ukazovací zařízení na tok vstupních souborů resp stdin že fgets() bude číst z.

Abychom lépe pochopili, jak fgets() funguje, podívejme se na příklad:

Příklad:

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

Výstup:

 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: 

Vysvětlení:

Ve výše uvedeném příkladu začneme začleněním příslušného hlavičkového souboru, 'stdio.h' . Poté je vstupní řetězec definován jako vstup pole znaků o velikosti 100.

Použitím funkce printf(). , program požádá uživatele o zadání řetězce. Potom, stdin se používá jako vstupní proud , a fgets() se používá se vstupem jako cílový řetězec, sizeof (vstup) a maximální velikost ke čtení. Poté program používá printf() pro výstup zadaného řetězce.

Fgets() funkce může číst a Uložit znak nového řádku 'n' pokud se objeví před dosažením maximální velikosti. Umožňuje zjistit, zda byl vstupní řádek přečten celý nebo zkrácený kvůli prostorovým omezením.

Příklad:

Pomocí upraveného fragmentu kódu můžete použít metodu strcspn(). na vymazat a nový řádek znak ze vstupního řetězce:

 #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; } 

Výstup:

 Enter a string: Hello World You entered: Hello World 

Vysvětlení:

Délka podřetězce tvořeného znaky, které nejsou v dodané znakové sadě, je určena funkce strcspn(). . V tomto případě, nulový znak '0' se používá k nahrazení znaku nového řádku po zadání 'n' jako množinu znaků, které se mají hledat.

Závěr:

Na závěr čtení vstupní řetězce ze souborových proudů nebo standardního vstupu pomocí C metoda fgets(). je spolehlivý a bezpečný. Je to užitečný nástroj pro zpracování uživatelského vstupu regulovaným způsobem, protože umožňuje vybrat maximální velikost pro vstup a zpracovává znaky nového řádku.

Zastaralé funkce get(). je nahrazeno bezpečnější funkce fgets(). , která opravuje bezpečnostní chyby způsobené přetečení vyrovnávací paměti . Zajišťuje, že se vstupní řetězec nezvětší, než je povoleno, čímž se zabrání potenciálním problémům s poškozením paměti.

Poskytnutý příklad kódu ukazuje, jak používat fgets() správně zachytit vstup uživatele a odstranit znak nového řádku, pokud se objeví. Zdůrazňuje, jak zásadní je vzít v úvahu vstupní omezení a vypořádat se se znaky nového řádku, aby bylo zajištěno přesné zpracování řetězců.

Vývojáři mohou zlepšit zabezpečení a robustnost svých programů v jazyce C fgets() . Definováním maximální velikosti pro vstup se mohou vyhnout neočekávanému chování a potenciálnímu narušení bezpečnosti způsobenému velkými vstupy.

Aspirující programátoři C by se s ním měli seznámit fgets() a jeho návod k použití, aby byla zajištěna bezpečná a efektivní manipulace se vstupy. Vývojáři, kteří jsou si této funkce vědomi, mohou vytvářet spolehlivější a bezpečnější software, který chrání před často se vyskytujícími chybami zabezpečení souvisejícími se vstupy.