logo

funció fgets() en C

En programació C, manipulació entrada i sortida activitats és essencial. Fgets() és una de les moltes funcions disponibles entrada . Amb l'ajuda d'aquesta funció robusta, els desenvolupadors poden llegir de manera segura i precisa la informació d'un flux determinat. En aquest article, examinarem el ins i sortides de fgets() , repassant-ne sintaxi, aplicació, codi de mostra , i resultats esperats .

El funció fgets(). , abreviatura de 'Fitxer obteniu cadena' , s'utilitza sovint per llegir una cadena d'un flux de fitxers o entrada estàndard (stdin) . Proporciona un substitut més segur de l'obsolet funció gets(). , que s'utilitzava anteriorment però que ara suposa un problema de seguretat. La funció fgets() ofereix un mitjà per restringir el nombre de caràcters llegits i gestiona eficaçment els caràcters de nova línia.

La sintaxi de fgets() és la següent:

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

Els paràmetres es desglossen de la següent manera:

dateformat.format java

str: És una referència a la matriu de caràcters (cadena) que s'utilitzarà per emmagatzemar l'entrada.

mida: El nombre total de caràcters (inclosos els caràcter nul '0' ) que es pot llegir.

corrent: El dispositiu apuntador al flux del fitxer d'entrada o stdin això fgets() llegirà de.

Per entendre millor com funciona fgets(), mirem un exemple:

Exemple:

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

Sortida:

 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: 

Explicació:

A l'exemple anterior, comencem incorporant el fitxer de capçalera adequat, 'stdio.h' . Després d'això, la cadena d'entrada es defineix com una entrada de matriu de caràcters amb una mida de 100.

desviació estàndard dels pandas

Utilitzant funció printf(). , el programa demana a l'usuari que introdueixi una cadena. Després d'això, stdin s'utilitza com a flux d'entrada , i fgets() s'utilitza amb l'entrada com a cadena de destinació, sizeof (entrada) , i mida màxima per llegir. Després d'això, el programa utilitza printf() per sortir la cadena introduïda.

Fgets() funció pot llegir i guardar el caràcter de nova línia 'n' si apareix abans d'arribar a la mida màxima. Permet saber si la línia d'entrada s'ha llegit completament o s'ha truncat a causa de les restriccions d'espai.

Exemple:

Mitjançant el fragment de codi modificat, podeu utilitzar el mètode strcspn(). a esborrar el nova línia caràcter de la cadena d'entrada:

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

Sortida:

 Enter a string: Hello World You entered: Hello World 

Explicació:

La longitud de la subcadena formada per caràcters que no estan en el conjunt de caràcters subministrat està determinada per l' funció strcspn(). . En aquest cas, el caràcter nul '0' s'utilitza per substituir el caràcter de nova línia després d'especificar 'n' com el conjunt de caràcters a cercar.

Conclusió:

En conclusió, lectura cadenes d'entrada des de fluxos de fitxers o d'entrada estàndard mitjançant el C mètode fgets(). és fiable i segur. És una eina útil per processar l'entrada de l'usuari d'una manera regulada perquè us permet seleccionar una mida màxima per a l'entrada i gestiona els caràcters de nova línia.

estructura de dades

El obsolet funció gets(). es substitueix pel més segur funció fgets(). , que corregeix els errors de seguretat causats per desbordaments de buffer . Assegura que la cadena d'entrada no sigui més gran del que està permès, evitant possibles problemes de corrupció de memòria.

El codi d'exemple proporcionat mostra com utilitzar-lo fgets() correctament per capturar l'entrada de l'usuari i eliminar el caràcter de nova línia si apareix. Subratlla el crucial que és tenir en compte les restriccions d'entrada i tractar els caràcters de nova línia per garantir un processament precís de les cadenes.

Els desenvolupadors poden millorar la seguretat i la robustesa dels seus programes C amb fgets() . Poden evitar comportaments inesperats i possibles incompliments de seguretat provocats per grans entrades definint una mida màxima per a l'entrada.

Els aspirants a programadors C haurien de familiaritzar-se fgets() i les seves instruccions d'ús per garantir un maneig segur i eficaç de les entrades. Els desenvolupadors que coneixen aquesta funció poden produir programari més fiable i segur que protegeixi les vulnerabilitats relacionades amb les entrades que es troben amb freqüència.