logo

Funkcia fgets() v C

V programovaní v C, manipulácia vstup a výkon činnosti sú nevyhnutné. Fgets() je jednou z mnohých funkcií, ktoré sú k dispozícii vstup . Pomocou tejto robustnej funkcie môžu vývojári bezpečne a presne čítať informácie z daného streamu. V tomto článku budeme skúmať ins a výstupy z fgets() , prechádzajúc cez jeho syntax, aplikácia, vzorový kód , a očakávané výsledky .

The funkcia fgets(). , skratka pre 'file get string' , sa často používa na čítanie reťazca zo súborového toku alebo štandardný vstup (stdin) . Poskytuje bezpečnejšiu náhradu za zastarané Funkcia get(). , ktorý sa predtým používal, ale teraz predstavuje bezpečnostné riziko. Funkcia fgets() ponúka prostriedky na obmedzenie počtu prečítaných znakov a efektívne spracováva znaky nového riadku.

Syntax pre fgets() je nasledovná:

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

Parametre sú rozdelené nasledovne:

str: Je to odkaz na pole znakov (reťazec), ktoré sa použije na uloženie vstupu.

veľkosť: Celkový počet znakov (vrátane nulový znak '0' ), ktoré sa dajú prečítať.

Prúd: Ukazovacie zariadenie na vstupný prúd súboru resp stdin že fgets() bude čítať z.

Aby sme lepšie pochopili, ako fgets() funguje, pozrime sa na príklad:

Príklad:

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

Výkon:

 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: 

Vysvetlenie:

Vo vyššie uvedenom príklade začneme začlenením príslušného súboru hlavičky, 'stdio.h' . Potom je vstupný reťazec definovaný ako vstup poľa znakov s veľkosťou 100.

Použitím funkcia printf(). , program požiada používateľa o zadanie reťazca. Potom, stdin sa používa ako vstupný prúd , a fgets() sa používa so vstupom ako cieľový reťazec, veľkosť (vstup) a maximálnu veľkosť na čítanie. Potom program používa printf() na výstup zadaného reťazca.

Fgets() funkcia môže čítať a uložiť znak nového riadku 'n' ak sa objaví pred dosiahnutím maximálnej veľkosti. Umožňuje zistiť, či bol vstupný riadok prečítaný celý alebo skrátený z dôvodu priestorových obmedzení.

Príklad:

Pomocou upraveného útržku kódu môžete použiť metóda strcspn(). do vymazať na Nový riadok znak zo vstupného reťazca:

 #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ýkon:

 Enter a string: Hello World You entered: Hello World 

Vysvetlenie:

Dĺžka podreťazca zloženého zo znakov, ktoré nie sú v dodanej znakovej sade, je určená funkcia strcspn(). . V tomto prípade, nulový znak '0' sa používa na nahradenie znaku nového riadku po zadaní 'n' ako množinu znakov, ktoré sa majú hľadať.

Záver:

Na záver čítanie vstupné reťazce zo súborových prúdov alebo štandardného vstupu pomocou C metóda fgets(). je spoľahlivý a bezpečný. Je to užitočný nástroj na spracovanie používateľského vstupu regulovaným spôsobom, pretože vám umožňuje vybrať maximálnu veľkosť vstupu a spracováva znaky nového riadku.

Zastarané Funkcia get(). sa nahrádza bezpečnejším funkcia fgets(). , ktorý opravuje bezpečnostné chyby spôsobené pretečenie vyrovnávacej pamäte . Zabezpečuje, aby sa vstupný reťazec nezväčšil, ako je povolené, čím sa predchádza potenciálnym problémom s poškodením pamäte.

Poskytnutý príklad kódu ukazuje, ako používať fgets() správne zachytiť vstup používateľa a odstrániť znak nového riadku, ak sa objaví. Zdôrazňuje, aké dôležité je brať do úvahy vstupné obmedzenia a zaoberať sa znakmi nového riadku, aby sa zabezpečilo presné spracovanie reťazcov.

Vývojári môžu zlepšiť bezpečnosť a robustnosť svojich programov v jazyku C fgets() . Definovaním maximálnej veľkosti vstupu sa môžu vyhnúť neočakávanému správaniu a potenciálnemu narušeniu bezpečnosti spôsobenému veľkými vstupmi.

Ašpirujúci programátori v jazyku C by sa s ním mali zoznámiť fgets() a jeho návod na použitie, aby sa zabezpečila bezpečná a efektívna manipulácia so vstupmi. Vývojári, ktorí sú si vedomí tejto funkcie, môžu vytvoriť spoľahlivejší a bezpečnejší softvér, ktorý chráni pred často sa vyskytujúcimi zraniteľnosťami súvisiacimi so vstupmi.