logo

funkcija fgets() v C

Pri programiranju C, rokovanje vnos in izhod dejavnosti bistvenega pomena. Fgets() je ena od mnogih funkcij, ki so na voljo za vnos . S pomočjo te robustne funkcije lahko razvijalci varno in natančno berejo informacije iz danega toka. V tem članku bomo preučili ins in izpadi od fgets() , gre čez svoje sintaksa, aplikacija, vzorčna koda , in pričakovani rezultati .

The funkcijo fgets(). , okrajšava za 'file get string' , se pogosto uporablja za branje niza iz datotečnega toka oz standardni vhod (stdin) . Zagotavlja bolj varen nadomestek za zastarele funkcijo gets(). , ki je bil prej uporabljen, zdaj pa predstavlja varnostno skrb. Funkcija fgets() ponuja način za omejevanje števila prebranih znakov in učinkovito obravnava znake za novo vrstico.

Sintaksa za fgets() je naslednja:

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

Parametri so razdeljeni na naslednji način:

str: Je sklic na niz znakov (niz), ki bo uporabljen za shranjevanje vnosa.

int parseint

velikost: Skupno število znakov (vključno z ničelni znak '0' ), ki jih je mogoče prebrati.

tok: Kazalna naprava na vhodni datotečni tok oz stdin to fgets() bo bral iz.

Da bi bolje razumeli, kako deluje fgets(), si poglejmo primer:

primer:

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

Izhod:

 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: 

Pojasnilo:

V zgornjem primeru začnemo z vključitvijo ustrezne datoteke glave, 'stdio.h' . Po tem je vhodni niz definiran kot vnos niza znakov z velikostjo 100.

Uporaba funkcijo printf(). , program od uporabnika zahteva vnos niza. Potem, stdin se uporablja kot vhodni tok , in fgets() se uporablja z vnosom kot ciljni niz, sizeof(vnos) in največja velikost za branje. Po tem program uporablja printf() za izpis vnesenega niza.

lokalni datum

Fgets() funkcija lahko prebrati in shraniti znak za novo vrstico 'n' če se pojavi, preden je dosežena največja velikost. Omogoča ugotoviti, ali je bila vhodna vrstica prebrana v celoti ali okrnjena zaradi prostorskih omejitev.

primer:

Z uporabo spremenjenega delčka kode lahko uporabite metoda strcspn(). do izbrisati the nova vrstica znak iz vhodnega 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; } 

Izhod:

 Enter a string: Hello World You entered: Hello World 

Pojasnilo:

kako izbrisati stolpec v postgresql

Dolžino podniza, sestavljenega iz znakov, ki niso v priloženem naboru znakov, določa funkcijo strcspn(). . V tem primeru je ničelni znak '0' se uporablja za zamenjavo znaka za novo vrstico po podajanju 'n' kot nabor znakov za iskanje.

Zaključek:

Za zaključek branje vhodni nizi iz datotečnih tokov ali standardnega vnosa z uporabo C metoda fgets(). je zanesljiv in varen. Je uporabno orodje za obdelavo uporabniškega vnosa na reguliran način, saj vam omogoča izbiro največje velikosti za vnos in obravnava znake za novo vrstico.

Zastareli funkcijo gets(). se nadomesti z varnejšim funkcijo fgets(). , ki odpravlja varnostne pomanjkljivosti, ki jih povzroča prelivanje medpomnilnika . Zagotavlja, da vhodni niz ne postane večji od dovoljenega, s čimer se izognete morebitnim težavam s poškodbo pomnilnika.

Navedeni primer kode prikazuje, kako uporabljati fgets() pravilno zajeti uporabniški vnos in odstraniti znak nove vrstice, če se pojavi. Poudarja, kako pomembno je upoštevati vnosne omejitve in ravnati z znaki za novo vrstico, da zagotovimo natančno obdelavo nizov.

Razvijalci lahko izboljšajo varnost in robustnost svojih programov C z fgets() . Lahko se izognejo nepričakovanemu vedenju in morebitnim kršitvam varnosti, ki jih povzročajo veliki vnosi, tako da določijo največjo velikost vnosa.

Ambiciozni programerji C bi se morali seznaniti z fgets() in navodila za uporabo, da zagotovite varno in učinkovito obdelavo vnosa. Razvijalci, ki se zavedajo te funkcije, lahko ustvarijo bolj zanesljivo in varno programsko opremo, ki ščiti pred ranljivostmi, povezanimi z vnosom, ki se pogosto pojavljajo.