logo

fgets() függvény C-ben

C-ben programozás, kezelés bemenet és Kimenet tevékenységek elengedhetetlenek. Fgets() egyike a számos funkció közül, amelyekhez elérhető bemenet . Ennek a robusztus funkciónak a segítségével a fejlesztők biztonságosan és pontosan olvashatják az információkat egy adott adatfolyamból. Ebben a cikkben megvizsgáljuk a ins és outs nak,-nek fgets() , átmegy rajta szintaxis, alkalmazás, mintakód , és Várható eredmények .

A fgets() függvény , rövidítése 'file get string' , gyakran használják egy karakterlánc beolvasására fájlfolyamból vagy szabványos bemenet (stdin) . Biztonságosabb helyettesítést nyújt az elavultnak gets() függvény , amelyet korábban használtak, de most biztonsági aggályokat vet fel. A funkció fgets() lehetőséget kínál az olvasott karakterek számának korlátozására, és hatékonyan kezeli az újsor karaktereket.

Az fgets() szintaxisa a következő:

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

A paraméterek a következőképpen vannak felosztva:

str: Ez egy hivatkozás a karaktertömbre (karakterláncra), amelyet a bemenet tárolására használunk.

az android.process.acore folyamatosan leáll

méret: A karakterek teljes száma (beleértve a null karakter '0' ) olvasható.

folyam: A mutatóeszköz a bemeneti fájlfolyamhoz ill stdin hogy fgets() -től fog olvasni.

karakterlánc átalakítása int-re

Annak érdekében, hogy jobban megértsük, hogyan működik az fgets(), nézzünk meg egy példát:

Példa:

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

Kimenet:

 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: 

Magyarázat:

A fenti példában a megfelelő fejlécfájl beépítésével kezdjük, 'stdio.h' . Ezt követően a bemeneti karakterlánc 100 méretű karaktertömb bemenetként kerül meghatározásra.

Használata printf() függvény , a program megkéri a felhasználót, hogy írjon be egy karakterláncot. Azt követően, stdin mint a bemeneti adatfolyam , és fgets() cél karakterláncként a bemenettel használatos, mérete (bemenet) , és a maximális olvasható méret. Ezt követően a program használja printf() a beírt karakterlánc kiadásához.

Fgets() függvény lehet olvas és megment az újsor karakter 'n' ha a maximális méret elérése előtt jelenik meg. Lehetővé teszi annak megállapítását, hogy a bemeneti sort a helyszűke miatt teljesen beolvasták vagy csonkolták.

Példa:

A módosított kódrészlet segítségével használhatja a strcspn() metódus nak nek töröl a új sor karakter a bemeneti karakterláncból:

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

Kimenet:

 Enter a string: Hello World You entered: Hello World 

Magyarázat:

A mellékelt karakterkészletben nem szereplő karakterekből álló részkarakterlánc hosszát a strcspn() függvény . Ebben az esetben a null karakter '0' megadása után az újsor karakter helyettesítésére szolgál 'n' mint a keresendő karakterkészlet.

Következtetés:

Befejezésül olvasás bemeneti karakterláncok fájlfolyamokból vagy szabványos bemenetről a C segítségével fgets() metódus megbízható és biztonságos. Hasznos eszköz a felhasználói bevitel szabályozott feldolgozásához, mert lehetővé teszi a bevitel maximális méretének kiválasztását, és kezeli az újsor karaktereket.

Az elavult gets() függvény felváltja a biztonságosabb fgets() függvény által okozott biztonsági hibákat javítja ki puffer túlcsordul . Gondoskodik arról, hogy a bemeneti karakterlánc ne legyen nagyobb a megengedettnél, elkerülve a lehetséges memóriasérülési problémákat.

A mellékelt példakód megmutatja, hogyan kell használni fgets() helyesen rögzíti a felhasználói bevitelt, és eltávolítja az újsor karaktert, ha megjelenik. Hangsúlyozza, mennyire fontos figyelembe venni a beviteli kényszereket, és kezelni az újsor karaktereket a pontos karakterlánc-feldolgozás érdekében.

stdin c programozás

A fejlesztők ezzel javíthatják C-programjaik biztonságát és robusztusságát fgets() . A bevitel maximális méretének meghatározásával elkerülhetik a váratlan viselkedéseket és a nagy bemenetek által okozott potenciális biztonsági megsértéseket.

A törekvő C programozóknak meg kell ismerkedniük fgets() és használati utasítása a biztonságos és hatékony adatkezelés biztosítása érdekében. Azok a fejlesztők, akik ismerik ezt a funkciót, megbízhatóbb és biztonságosabb szoftvereket állíthatnak elő, amelyek megvédik a gyakran előforduló, bemenettel kapcsolatos sebezhetőségeket.