logo

funcția fgets() în C

În programare C, manipulare intrare și ieșire activități este esențială. Fgets() este una dintre numeroasele funcții disponibile pentru intrare . Cu ajutorul acestei funcții robuste, dezvoltatorii pot citi în mod sigur și precis informații dintr-un anumit flux. În acest articol, vom examina ins și ieşiri de fgets() , trecând peste ea sintaxă, aplicație, cod exemplu , și rezultate asteptate .

The funcția fgets(). , scurt pentru 'Fișierul obține șirul' , este folosit frecvent pentru a citi un șir dintr-un flux de fișiere sau intrare standard (stdin) . Oferă un înlocuitor mai sigur pentru cele depreciate funcția gets(). , care a fost folosit anterior, dar acum reprezintă o problemă de securitate. Functia fgets() oferă un mijloc de a restricționa numărul de caractere citite și gestionează eficient caracterele newline.

Sintaxa pentru fgets() este următoarea:

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

Parametrii sunt împărțiți după cum urmează:

str: Este o referință la matricea de caractere (șir) care va fi folosită pentru a stoca intrarea.

mărimea: Numărul total de caractere (inclusiv caracter nul „0” ) care poate fi citit.

curent: Dispozitivul de indicare către fluxul de fișiere de intrare sau stdin acea fgets() va citi din.

Pentru a înțelege mai bine cum funcționează fgets(), să ne uităm la un exemplu:

Exemplu:

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

Ieșire:

 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: 

Explicaţie:

În exemplul de mai sus, începem prin a încorpora fișierul antet corespunzător, „stdio.h” . După aceea, șirul de intrare este definit ca o matrice de caractere de intrare cu o dimensiune de 100.

Folosind funcția printf(). , programul cere utilizatorului să introducă un șir. După care, stdin este folosit ca flux de intrare , și fgets() este utilizat cu intrare ca șir de destinație, dimensiunea (intrare) , și dimensiunea maximă de citit. După aceea, programul folosește printf() pentru a scoate șirul introdus.

Fgets() funcția poate citit și Salvați caracterul noua linie 'n' dacă apare înainte de a se atinge dimensiunea maximă. Face posibil să se știe dacă linia de intrare a fost citită în întregime sau trunchiată din cauza constrângerilor de spațiu.

Exemplu:

Folosind fragmentul de cod modificat, puteți utiliza metoda strcspn(). la șterge cel linie nouă caracter din șirul de intrare:

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

Ieșire:

 Enter a string: Hello World You entered: Hello World 

Explicaţie:

Lungimea subșirului format din caractere care nu fac parte din setul de caractere furnizat este determinată de funcția strcspn(). . În acest caz, caracter nul „0” este folosit pentru a înlocui caracterul de nouă linie după specificare 'n' ca set de caractere de căutat.

Concluzie:

În concluzie, lectură șiruri de caractere de intrare din fluxuri de fișiere sau intrare standard folosind C metoda fgets(). este de încredere și sigură. Este un instrument util pentru procesarea intrărilor utilizatorului într-o manieră reglementată, deoarece vă permite să selectați o dimensiune maximă pentru introducere și gestionează caracterele newline.

Deprecatul funcția gets(). este înlocuit cu cel mai sigur funcția fgets(). , care remediază erorile de securitate cauzate de debordări de tampon . Se asigură că șirul de intrare nu devine mai mare decât ceea ce este permis, evitând potențialele probleme de corupție a memoriei.

Exemplul de cod furnizat arată cum se utilizează fgets() corect pentru a captura intrarea utilizatorului și pentru a elimina caracterul de nouă linie dacă apare. Subliniază cât de crucial este să se țină cont de constrângerile de intrare și să se ocupe de caracterele newline pentru a asigura procesarea corectă a șirurilor.

Dezvoltatorii pot îmbunătăți securitatea și robustețea programelor lor C cu fgets() . Ele pot evita comportamentele neașteptate și potențialele breșe de securitate cauzate de intrări mari prin definirea unei dimensiuni maxime pentru intrare.

Programatorii C aspiranți ar trebui să se familiarizeze cu fgets() și instrucțiunile sale de utilizare pentru a asigura o manipulare sigură și eficientă a intrărilor. Dezvoltatorii care sunt conștienți de această funcție pot produce software mai fiabil și mai sigur, care protejează împotriva vulnerabilităților legate de intrări care sunt întâlnite frecvent.