logo

funkcija fgets() u C-u

U C programiranju, rukovanje ulazni i izlaz aktivnosti je bitno. Fgets() je jedna od mnogih funkcija koje su dostupne za ulazni . Uz pomoć ove robusne funkcije, programeri mogu sigurno i precizno čitati informacije iz određenog toka. U ovom ćemo članku ispitati ins i izlasci od fgets() , prelazeći preko svog sintaksa, aplikacija, primjer koda , i očekivani rezultati .

The funkcija fgets(). , skraćenica za 'file get string' , često se koristi za čitanje niza iz toka datoteke ili standardni unos (stdin) . Pruža sigurniju zamjenu za zastarjele funkcija gets(). , koji se prije koristio, ali sada predstavlja sigurnosni problem. Funkcija fgets() nudi sredstva za ograničavanje broja znakova za čitanje i učinkovito obrađuje znakove za novi red.

Sintaksa za fgets() je sljedeća:

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

Parametri su raščlanjeni na sljedeći način:

matrice u c programiranju

str: To je referenca na niz znakova (string) koji će se koristiti za pohranjivanje unosa.

veličina: Ukupan broj znakova (uključujući nulti znak '0' ) koji se može čitati.

tok: Uređaj za pokazivanje na ulazni tok datoteke ili stdin da fgets() čitat će iz.

Kako bismo bolje shvatili kako fgets() funkcionira, pogledajmo primjer:

Primjer:

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

Izlaz:

 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: 

Obrazloženje:

U gornjem primjeru započinjemo uključivanjem odgovarajuće datoteke zaglavlja, 'stdio.h' . Nakon toga, ulazni niz se definira kao unos niza znakova veličine 100.

virtualna memorija

Korištenje funkcija printf(). , program traži od korisnika da unese niz. nakon toga, stdin koristi se kao ulazni tok , i fgets() koristi se s unosom kao odredišni niz, sizeof(unos) , i najveća veličina za čitanje. Nakon toga program koristi printf() za ispis unesenog niza.

Fgets() funkcija može čitati i uštedjeti znak novog retka 'n' ako se pojavi prije nego što se dosegne najveća veličina. Omogućuje da se utvrdi je li ulazni red pročitan u cijelosti ili je skraćen zbog ograničenja prostora.

Primjer:

Koristeći modificirani isječak koda, možete koristiti metoda strcspn(). do izbrisati the nova linija znak iz ulaznog niza:

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

Izlaz:

 Enter a string: Hello World You entered: Hello World 

Obrazloženje:

Duljina podniza sastavljenog od znakova koji nisu u isporučenom skupu znakova određena je funkcija strcspn(). . U ovom slučaju, nulti znak '0' koristi se za zamjenu znaka novog retka nakon navođenja 'n' kao skup znakova za traženje.

Zaključak:

Zaključno, čitanje ulazni nizovi iz tokova datoteka ili standardnog unosa koristeći C metoda fgets(). je pouzdan i siguran. To je koristan alat za obradu korisničkog unosa na regulirani način jer vam omogućuje odabir maksimalne veličine za unos i obrađuje znakove za novi red.

algoritmi binarno pretraživanje

Zastarjeli funkcija gets(). zamjenjuje se sigurnijim funkcija fgets(). , koji popravlja sigurnosne nedostatke uzrokovane međuspremnik prelijeva . Osigurava da ulazni niz ne postane veći od onoga što je dopušteno, izbjegavajući moguće probleme s oštećenjem memorije.

Navedeni primjer koda pokazuje kako se koristi fgets() ispravno za hvatanje korisničkog unosa i uklanjanje znaka novog retka ako se pojavi. Naglašava koliko je ključno uzeti u obzir ograničenja unosa i nositi se sa znakovima za novi red kako bi se osigurala točna obrada niza.

Programeri mogu poboljšati sigurnost i robusnost svojih C programa pomoću fgets() . Oni mogu izbjeći neočekivana ponašanja i potencijalna kršenja sigurnosti uzrokovana velikim unosima definiranjem maksimalne veličine za unos.

Ambiciozni C programeri trebali bi se upoznati s fgets() i njegove upute za korištenje kako bi se osiguralo sigurno i učinkovito rukovanje unosom. Programeri koji su svjesni ove funkcije mogu proizvesti pouzdaniji i sigurniji softver koji štiti od ranjivosti povezanih s unosom koje se često susreću.