logo

fgets()-funktio C:ssä

C-ohjelmointi, käsittely syöttö ja ulostulo toiminta on välttämätöntä. Fgets() on yksi monista käytettävissä olevista toiminnoista syöttö . Tämän vahvan toiminnon avulla kehittäjät voivat turvallisesti ja tarkasti lukea tietoja tietystä virrasta. Tässä artikkelissa tarkastelemme ins ja ulostulot / fgets() , menee sen yli syntaksi, sovellus, esimerkkikoodi , ja odotetut tulokset .

The fgets()-funktio , lyhenne jstk 'file get string' , käytetään usein merkkijonon lukemiseen tiedostovirrasta tai vakiotulo (stdin) . Se tarjoaa turvallisemman korvikkeen vanhentuneelle gets()-funktio , jota käytettiin aiemmin, mutta nyt se aiheuttaa turvallisuusriskin. Toiminto fgets() tarjoaa keinon rajoittaa luettavien merkkien määrää ja käsittelee tehokkaasti rivinvaihtomerkkejä.

Fgets():n syntaksi on seuraava:

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

Parametrit on jaettu seuraavasti:

str: Se on viittaus merkkijonoon (merkkijonoon), jota käytetään syötteen tallentamiseen.

koko: Merkkien kokonaismäärä (mukaan lukien tyhjä merkki '0' ), joka voidaan lukea.

stream: Osoitinlaite syöttötiedostovirtaan tai stdin että fgets() lukee alkaen.

Ymmärtääksemme paremmin, kuinka fgets() toimii, katsotaanpa esimerkkiä:

ipconfig Ubuntussa

Esimerkki:

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

Lähtö:

 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: 

Selitys:

Yllä olevassa esimerkissä aloitamme sisällyttämällä sopivan otsikkotiedoston, 'stdio.h' . Sen jälkeen syöttömerkkijono määritellään merkkijonon syötteeksi, jonka koko on 100.

Käyttämällä printf()-funktio , ohjelma pyytää käyttäjää syöttämään merkkijonon. Sen jälkeen, stdin käytetään syöttövirta , ja fgets() käytetään syötteen kanssa kohdemerkkijonona, koko (syöttö) , ja luettava enimmäiskoko. Sen jälkeen ohjelma käyttää printf() syöttääksesi syötetyn merkkijonon.

Fgets() toiminto voi lukea ja Tallentaa rivinvaihtomerkki 'n' jos se tulee näkyviin ennen kuin enimmäiskoko on saavutettu. Sen avulla on mahdollista kertoa, onko syöttörivi luettu kokonaan vai katkaistu tilarajoitusten vuoksi.

Esimerkki:

Muokatun koodinpätkän avulla voit käyttää strcspn() -menetelmä kohtaan poistaa the uusi rivi merkki syötemerkkijonosta:

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

Lähtö:

javan nimeämiskäytännöt
 Enter a string: Hello World You entered: Hello World 

Selitys:

Alimerkkijonon pituus, joka koostuu merkeistä, jotka eivät ole toimitetussa merkistössä, määräytyy strcspn()-funktio . Tässä tapauksessa tyhjä merkki '0' käytetään korvaamaan rivinvaihtomerkki määrityksen jälkeen 'n' etsittävien merkkien joukkona.

muuttuja globaali javascript

Johtopäätös:

Lopuksi lukeminen syötemerkkijonoja tiedostovirroista tai vakiosyötteestä käyttämällä C fgets() -menetelmä on luotettava ja turvallinen. Se on hyödyllinen työkalu käyttäjän syötteiden käsittelemiseen säännellyllä tavalla, koska sen avulla voit valita syötteen enimmäiskoon ja käsittelee rivinvaihtomerkkejä.

Käytöstä poistettu gets()-funktio korvataan turvallisemmalla fgets()-funktio , joka korjaa aiheuttamat tietoturvavirheet puskurin ylivuoto . Se varmistaa, että syöttömerkkijono ei kasva sallittua suuremmiksi, mikä välttää mahdolliset muistin vioittumisongelmat.

Toimitettu esimerkkikoodi näyttää, kuinka sitä käytetään fgets() oikein siepatakseen käyttäjän syötteen ja poistaaksesi rivinvaihdon, jos se tulee näkyviin. Se korostaa, kuinka tärkeää on ottaa huomioon syöttörajoitukset ja käsitellä rivinvaihtomerkkejä tarkan merkkijonojen käsittelyn varmistamiseksi.

Kehittäjät voivat parantaa C-ohjelmiensa turvallisuutta ja kestävyyttä fgets() . He voivat välttää odottamattomia käyttäytymismalleja ja mahdollisia tietoturvaloukkauksia, joita suuret syötteet aiheuttavat määrittämällä syötteelle enimmäiskoon.

Pyrkivien C-ohjelmoijien tulisi tutustua fgets() ja sen käyttöohjeet turvallisen ja tehokkaan syötteiden käsittelyn varmistamiseksi. Kehittäjät, jotka ovat tietoisia tästä toiminnosta, voivat tuottaa luotettavampia ja turvallisempia ohjelmistoja, jotka suojaavat syötteeseen liittyviltä haavoittuvuuksilta, joita usein kohdataan.