logo

funzione fgets() in C

Nella programmazione in C, la gestione ingresso E produzione attività è essenziale. Fget() è una delle tante funzioni disponibili per ingresso . Con l'aiuto di questa potente funzione, gli sviluppatori possono leggere in modo sicuro e preciso le informazioni da un determinato flusso. In questo articolo esamineremo il ins E outs Di fget() , esaminando il suo sintassi, applicazione, codice di esempio , E risultati aspettati .

IL funzione fgets() , Corto per 'il file ottiene la stringa' , viene spesso utilizzato per leggere una stringa da un flusso di file o ingresso standard (stdin) . Fornisce un sostituto più sicuro per ciò che è deprecato ottiene() la funzione , che veniva utilizzato in precedenza ma che ora costituisce un problema di sicurezza. La funzione fget() offre un mezzo per limitare il numero di caratteri letti e gestisce efficacemente i caratteri di nuova riga.

sequenza di fibonacci java

La sintassi per fgets() è la seguente:

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

I parametri sono così suddivisi:

stringa: È un riferimento all'array di caratteri (stringa) che verrà utilizzato per memorizzare l'input.

misurare: Il numero totale di caratteri (incluso il carattere nullo '0' ) che può essere letto.

flusso: Il dispositivo di puntamento al flusso di file di input o stdin Quello fget() leggerò da.

Per comprendere meglio come funziona fgets(), diamo un'occhiata a un esempio:

Esempio:

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

Produzione:

 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: 

Spiegazione:

Nell'esempio precedente, iniziamo incorporando il file di intestazione appropriato, 'stdio.h' . Successivamente, la stringa di input viene definita come un array di caratteri input con una dimensione pari a 100.

Utilizzando funzione printf() , il programma chiede all'utente di inserire una stringa. Dopo di che, stdin è usato come flusso di ingresso , E fget() viene utilizzato con input come stringa di destinazione, dimensione di (input) e la dimensione massima da leggere. Successivamente, il programma utilizza printf() per restituire la stringa immessa.

Fget() la funzione può Leggere E salva il carattere di nuova riga 'N' se appare prima che venga raggiunta la dimensione massima. Permette di capire se la riga di input è stata letta interamente o troncata a causa di vincoli di spazio.

Esempio:

Utilizzando lo snippet di codice modificato, puoi utilizzare il file metodo strcspn() A eliminare IL nuova linea carattere dalla stringa di input:

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

Produzione:

elenco doppiamente concatenato
 Enter a string: Hello World You entered: Hello World 

Spiegazione:

La lunghezza della sottostringa composta da caratteri non presenti nel set di caratteri fornito è determinata da funzione strcspn() . In questo caso, il carattere nullo '0' viene utilizzato per sostituire il carattere di nuova riga dopo averlo specificato 'N' come insieme di caratteri da cercare.

Conclusione:

In conclusione, leggere stringhe di input da flussi di file o input standard utilizzando C metodo fgets() è affidabile e sicuro. È uno strumento utile per elaborare l'input dell'utente in modo regolamentato poiché consente di selezionare una dimensione massima per l'input e gestisce i caratteri di nuova riga.

Il deprecato ottiene() la funzione viene sostituito da quello più sicuro funzione fgets() , che risolve i difetti di sicurezza causati da buffer overflow . Si assicura che la stringa di input non diventi più grande di quanto consentito, evitando potenziali problemi di danneggiamento della memoria.

Il codice di esempio fornito mostra come utilizzare fget() correttamente per acquisire l'input dell'utente e rimuovere il carattere di nuova riga se appare. Sottolinea quanto sia cruciale tenere conto dei vincoli di input e gestire i caratteri di nuova riga per garantire un'elaborazione accurata delle stringhe.

Gli sviluppatori possono migliorare la sicurezza e la robustezza dei loro programmi C con fget() . Possono evitare comportamenti imprevisti e potenziali violazioni della sicurezza causate da input di grandi dimensioni definendo una dimensione massima per l'input.

Gli aspiranti programmatori C dovrebbero acquisire familiarità fget() e le relative istruzioni per l'uso per garantire una gestione sicura ed efficace degli input. Gli sviluppatori consapevoli di questa funzione possono produrre software più affidabile e sicuro che protegge dalle vulnerabilità relative all'input che si riscontrano frequentemente.