logo

fgets() funktion i C

I C-programmering, håndtering input og produktion aktiviteter er afgørende. Fgets() er en af ​​de mange funktioner, der er tilgængelige for input . Ved hjælp af denne robuste funktion kan udviklere sikkert og præcist læse information fra en given strøm. I denne artikel vil vi undersøge ins og outs af fgets() , går over dens syntaks, applikation, eksempelkode , og Forventede resultater .

Det fgets() funktion , forkortelse for 'fil ​​få streng' , bruges ofte til at læse en streng fra en filstrøm eller standard input (stdin) . Det giver en mere sikker erstatning for det forældede gets() funktion , som tidligere blev brugt, men nu udgør et sikkerhedsproblem. Funktionen fgets() tilbyder et middel til at begrænse antallet af læste tegn og håndterer effektivt nye linjetegn.

maskinskriftsæt

Syntaks for fgets() er som følger:

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

Parametrene er opdelt som følger:

str: Det er en reference til tegnarrayet (strengen), der vil blive brugt til at gemme inputtet.

størrelse: Det samlede antal tegn (inklusive nultegn '0' ), der kan læses.

strøm: Pegeredskabet til inputfilstrømmen eller stdin at fgets() vil læse fra.

For bedre at forstå, hvordan fgets() fungerer, lad os se på et eksempel:

Eksempel:

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

Produktion:

 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: 

Forklaring:

I ovenstående eksempel begynder vi med at inkorporere den passende header-fil, 'stdio.h' . Derefter er inputstrengen defineret som et tegnarray-input med en størrelse på 100.

Ved brug af printf() funktion , beder programmet brugeren om at indtaste en streng. Efter det, stdin bruges som inputstrøm , og fgets() bruges med input som destinationsstreng, størrelse på (input) , og maksimal størrelse at læse. Derefter bruger programmet printf() for at udlæse den indtastede streng.

Fgets() funktion kan Læs og Gemme den nye linje karakter 'n' hvis den vises før den maksimale størrelse er nået. Det gør det muligt at se, om inputlinjen blev læst helt eller afkortet på grund af pladsbegrænsninger.

Eksempel:

Ved at bruge det ændrede kodestykke kan du bruge strcspn() metode til slette det ny linje tegn fra inputstrengen:

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

Produktion:

java-strengen er tom
 Enter a string: Hello World You entered: Hello World 

Forklaring:

Længden af ​​understrengen, der består af tegn, der ikke er i det medfølgende tegnsæt, bestemmes af strcspn() funktion . I dette tilfælde er nultegn '0' bruges til at erstatte det nye linjetegn efter angivelse 'n' som det sæt af tegn, der skal søges efter.

Konklusion:

Afslutningsvis læsning input strenge fra filstreams eller standardinput ved hjælp af C fgets() metode er pålidelig og sikker. Det er et nyttigt værktøj til at behandle brugerinput på en reguleret måde, fordi det giver dig mulighed for at vælge en maksimal størrelse for input og håndterer nye linjetegn.

Den forældede gets() funktion erstattes af det mere sikre fgets() funktion , som retter sikkerhedsfejl forårsaget af buffer overløb . Det sikrer, at inputstrengen ikke bliver større end det tilladte, hvilket undgår potentielle problemer med hukommelseskorruption.

Den medfølgende eksempelkode viser, hvordan du bruger fgets() korrekt for at fange brugerinput og fjerne linjeskifttegn, hvis det vises. Det understreger, hvor afgørende det er at tage hensyn til input-begrænsninger og håndtere nye linjetegn for at sikre nøjagtig strengbehandling.

Udviklere kan forbedre sikkerheden og robustheden af ​​deres C-programmer med fgets() . De kan undgå uventet adfærd og potentielle sikkerhedsbrud forårsaget af store input ved at definere en maksimal størrelse for input.

Aspirerende C-programmører bør blive fortrolige med fgets() og dens brugsanvisninger for at sikre sikker og effektiv inputhåndtering. Udviklere, der er opmærksomme på denne funktion, kan producere mere pålidelig og sikker software, der beskytter mod input-relaterede sårbarheder, der ofte stødes på.