logo

fgets()-funksjonen i C

I C-programmering, håndtering input og produksjon aktiviteter er avgjørende. Fgets() er en av de mange funksjonene som er tilgjengelige for input . Ved hjelp av denne robuste funksjonen kan utviklere sikkert og presist lese informasjon fra en gitt strøm. I denne artikkelen vil vi undersøke ins og outs av fgets() , går over sin syntaks, applikasjon, eksempelkode , og forventede resultater .

De fgets() funksjon , kort for 'fil ​​få streng' , brukes ofte til å lese en streng fra en filstrøm eller standardinngang (stdin) . Det gir en sikrere erstatning for de utdaterte gets() funksjon , som tidligere ble brukt, men som nå utgjør et sikkerhetsproblem. Funksjonen fgets() tilbyr et middel for å begrense antall leste tegn og håndterer effektivt nye linjetegn.

maskinskriftsett

Syntaksen for fgets() er som følger:

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

Parametrene er delt opp som følger:

str: Det er en referanse til tegnarrayen (strengen) som skal brukes til å lagre inndata.

størrelse: Det totale antallet tegn (inkludert nulltegn '0' ) som kan leses.

strøm: Pekeenheten til inndatafilstrømmen eller stdin at fgets() vil lese fra.

For å bedre forstå hvordan fgets() fungerer, la oss 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; } 

Produksjon:

 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 eksemplet ovenfor begynner vi med å inkludere den riktige overskriftsfilen, 'stdio.h' . Etter det er inndatastrengen definert som en tegnarray-inngang med en størrelse på 100.

Ved hjelp av printf() funksjon , ber programmet brukeren om å skrive inn en streng. Etter det, stdin brukes som inndatastrøm , og fgets() brukes med inndata som destinasjonsstreng, størrelse på (inndata) , og maksimal størrelse å lese. Etter det bruker programmet printf() for å sende ut den angitte strengen.

Fgets() funksjon kan lese og lagre nylinjetegnet 'n' hvis den vises før maksimal størrelse er nådd. Det gjør det mulig å fortelle om inndatalinjen ble lest fullstendig eller avkortet på grunn av plassbegrensninger.

Eksempel:

Ved å bruke den modifiserte kodebiten kan du bruke strcspn()-metoden til slette de ny linje tegn fra inndatastrengen:

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

Produksjon:

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

Forklaring:

Lengden på understrengen som består av tegn som ikke er i det medfølgende tegnsettet, bestemmes av strcspn() funksjon . I dette tilfellet nulltegn '0' brukes til å erstatte nylinjetegnet etter spesifisering 'n' som sett med tegn å søke etter.

Konklusjon:

Avslutningsvis lesing inndatastrenger fra filstrømmer eller standardinndata ved å bruke C fgets() metode er pålitelig og sikker. Det er et nyttig verktøy for å behandle brukerinndata på en regulert måte fordi det lar deg velge en maksimal størrelse for inndata og håndterer nylinjetegn.

Den avviklede gets() funksjon erstattes av det sikrere fgets() funksjon , som fikser sikkerhetsfeil forårsaket av buffer renner over . Den sørger for at inndatastrengen ikke blir større enn det som er tillatt, og unngår potensielle problemer med minnekorrupsjon.

Den medfølgende eksempelkoden viser hvordan du bruker fgets() riktig for å fange brukerinndata og fjerne linjeskifttegn hvis det vises. Det understreker hvor avgjørende det er å ta hensyn til inndatabegrensninger og håndtere nye linjetegn for å sikre nøyaktig strengbehandling.

Utviklere kan forbedre sikkerheten og robustheten til C-programmene sine med fgets() . De kan unngå uventet atferd og potensielle sikkerhetsbrudd forårsaket av store input ved å definere en maksimal størrelse for input.

Aspirerende C-programmerere bør bli kjent med fgets() og dens bruksanvisning for å sikre sikker og effektiv inndatahåndtering. Utviklere som er klar over denne funksjonen kan produsere mer pålitelig og sikker programvare som beskytter mot input-relaterte sårbarheter som ofte oppstår.