logo

fgets() funkcija C

C programavimas, tvarkymas įvestis ir išvestis veikla yra būtina. Fgets () yra viena iš daugelio galimų funkcijų įvestis . Naudodamiesi šia tvirta funkcija, kūrėjai gali saugiai ir tiksliai nuskaityti informaciją iš tam tikro srauto. Šiame straipsnyje mes išnagrinėsime ins ir išėjimai apie fgets () , eidamas per jį sintaksė, programa, pavyzdinis kodas , ir Tikėtini Rezultatai .

The fgets() funkcija , trumpai 'failas gauti eilutę' , dažnai naudojamas norint nuskaityti eilutę iš failų srauto arba standartinė įvestis (stdin) . Tai yra saugesnis nebenaudojamo pakaitalas gets() funkcija , kuris anksčiau buvo naudojamas, bet dabar kelia susirūpinimą dėl saugumo. Funkcija fgets () siūlo priemonę apriboti skaitomų simbolių skaičių ir efektyviai tvarko naujos eilutės simbolius.

Fgets() sintaksė yra tokia:

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

Parametrai suskirstyti taip:

str: Tai nuoroda į simbolių masyvą (eilelę), kuri bus naudojama įvesties saugojimui.

dydis: Bendras simbolių skaičius (įskaitant null simbolis '0' ), kurį galima perskaityti.

srautas: Nukreipimo įtaisas į įvesties failo srautą arba stdin kad fgets () skaitys iš.

Norėdami geriau suprasti, kaip veikia fgets(), pažvelkime į pavyzdį:

Pavyzdys:

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

Išvestis:

 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: 

Paaiškinimas:

do ir while ciklas java

Aukščiau pateiktame pavyzdyje pradedame įtraukdami atitinkamą antraštės failą, „stdio.h“ . Po to įvesties eilutė apibrėžiama kaip simbolių masyvo įvestis, kurios dydis yra 100.

Naudojant printf() funkcija , programa prašo vartotojo įvesti eilutę. Po to stdin naudojamas kaip įvesties srautas , ir fgets () naudojamas su įvestimi kaip paskirties eilutė, dydis (įvestis) , ir didžiausias skaitymo dydis. Po to programa naudoja printf() norėdami išvesti įvestą eilutę.

Fgets () funkcija gali skaityti ir sutaupyti naujos eilutės simbolis 'n' jei jis pasirodo nepasiekus maksimalaus dydžio. Tai leidžia nustatyti, ar įvesties eilutė buvo perskaityta visiškai, ar sutrumpinta dėl erdvės apribojimų.

Pavyzdys:

Naudodami modifikuotą kodo fragmentą galite naudoti strcspn() metodas į Ištrinti į nauja linija simbolis iš įvesties eilutės:

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

Išvestis:

 Enter a string: Hello World You entered: Hello World 

Paaiškinimas:

Poeilutės, sudarytos iš simbolių, kurių nėra pateiktame simbolių rinkinyje, ilgis nustatomas pagal strcspn() funkcija . Šiuo atveju, null simbolis '0' naudojamas naujos eilutės simboliui pakeisti nurodęs 'n' kaip ieškomų simbolių rinkinys.

Išvada:

Pabaigai, skaitymas įvesties eilutės iš failų srautų arba standartinės įvesties naudojant C fgets() metodas yra patikimas ir saugus. Tai naudingas įrankis reguliuojamam vartotojo įvesties apdorojimui, nes leidžia pasirinkti maksimalų įvesties dydį ir tvarko naujos eilutės simbolius.

Pasenęs gets() funkcija pakeičiamas saugesniu fgets() funkcija , kuris ištaiso saugumo trūkumus, atsiradusius dėl buferio perpildymas . Tai užtikrina, kad įvesties eilutė netaptų didesnė nei leidžiama, išvengiant galimų atminties sugadinimo problemų.

Pateiktas pavyzdinis kodas parodo, kaip naudoti fgets () teisingai užfiksuoti vartotojo įvestį ir pašalinti naujos eilutės simbolį, jei jis pasirodo. Jame pabrėžiama, kaip labai svarbu atsižvelgti į įvesties apribojimus ir susidoroti su naujos eilutės simboliais, kad būtų užtikrintas tikslus eilučių apdorojimas.

Kūrėjai gali pagerinti savo C programų saugumą ir patikimumą fgets () . Jie gali išvengti netikėto elgesio ir galimų saugumo pažeidimų, kuriuos sukelia didelė įvestis, nustatydami didžiausią įvesties dydį.

Norintys C programuotojai turėtų susipažinti su fgets () ir jo naudojimo instrukcijas, kad būtų užtikrintas saugus ir veiksmingas įvesties tvarkymas. Šią funkciją išmanantys kūrėjai gali sukurti patikimesnę ir saugesnę programinę įrangą, kuri apsaugotų nuo dažnai pasitaikančių su įvestimi susijusių pažeidžiamumų.