logo

Fonction fgets() en C

En programmation C, la gestion saisir et sortir les activités sont essentielles. Fgets() est l'une des nombreuses fonctions disponibles pour saisir . Grâce à cette fonction robuste, les développeurs peuvent lire de manière sécurisée et précise les informations d'un flux donné. Dans cet article, nous examinerons les ins et sorties de fgets() , en parcourant son syntaxe, application, exemple de code , et Résultats attendus .

Le Fonction fgets() , court pour 'le fichier récupère la chaîne' , est fréquemment utilisé pour lire une chaîne à partir d'un flux de fichiers ou entrée standard (stdin) . Il fournit un substitut plus sûr au système obsolète fonction obtient() , qui était auparavant utilisé mais pose désormais un problème de sécurité. La fonction fgets() offre un moyen de limiter le nombre de caractères lus et gère efficacement les caractères de nouvelle ligne.

La syntaxe de fgets() est la suivante :

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

Les paramètres sont répartis comme suit :

str : Il s'agit d'une référence au tableau de caractères (chaîne) qui sera utilisé pour stocker l'entrée.

taille: Le nombre total de caractères (y compris le caractère nul '0' ) qui peut être lu.

flux: Le périphérique de pointage vers le flux de fichiers d'entrée ou entrée standard que fgets() lira à partir de.

Afin de mieux comprendre le fonctionnement de fgets(), regardons 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; } 

Sortir:

 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: 

Explication:

Dans l'exemple ci-dessus, nous commençons par incorporer le fichier d'en-tête approprié, 'stdio.h' . Après cela, la chaîne d'entrée est définie comme une entrée de tableau de caractères d'une taille de 100.

En utilisant Fonction printf() , le programme demande à l'utilisateur de saisir une chaîne. Après cela, entrée standard est utilisé comme flux d'entrée , et fgets() est utilisé avec l'entrée comme chaîne de destination, taille de (entrée) , et la taille maximale à lire. Après cela, le programme utilise printf() pour afficher la chaîne saisie.

Fgets() la fonction peut lire et sauvegarder le caractère de nouvelle ligne 'n' s'il apparaît avant que la taille maximale ne soit atteinte. Il permet de savoir si la ligne de saisie a été lue entièrement ou tronquée en raison de contraintes d'espace.

Exemple:

À l'aide de l'extrait de code modifié, vous pouvez utiliser le Méthode strcspn() à supprimer le nouvelle ligne caractère de la chaîne d'entrée :

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

Sortir:

 Enter a string: Hello World You entered: Hello World 

Explication:

La longueur de la sous-chaîne composée de caractères ne figurant pas dans le jeu de caractères fourni est déterminée par le Fonction strcspn() . Dans ce cas, le caractère nul '0' est utilisé pour remplacer le caractère de nouvelle ligne après avoir spécifié 'n' comme ensemble de caractères à rechercher.

Conclusion:

En conclusion, en lisant chaînes d'entrée à partir de flux de fichiers ou d'une entrée standard en utilisant le C Méthode fgets() est fiable et sécurisé. Il s'agit d'un outil utile pour traiter les entrées utilisateur de manière réglementée car il vous permet de sélectionner une taille maximale pour l'entrée et gère les caractères de nouvelle ligne.

Le obsolète fonction obtient() est remplacé par le plus sécurisé Fonction fgets() , qui corrige les failles de sécurité causées par débordements de tampon . Il garantit que la chaîne d'entrée ne devient pas plus grande que ce qui est autorisé, évitant ainsi les problèmes potentiels de corruption de mémoire.

L'exemple de code fourni montre comment utiliser fgets() correctement pour capturer les entrées de l'utilisateur et supprimer le caractère de nouvelle ligne s'il apparaît. Il souligne à quel point il est crucial de prendre en compte les contraintes d'entrée et de gérer les caractères de nouvelle ligne pour garantir un traitement précis des chaînes.

Les développeurs peuvent améliorer la sécurité et la robustesse de leurs programmes C avec fgets() . Ils peuvent éviter les comportements inattendus et les failles de sécurité potentielles provoquées par des entrées volumineuses en définissant une taille maximale pour les entrées.

Les aspirants programmeurs C devraient se familiariser avec fgets() et ses instructions d'utilisation pour garantir une gestion sécurisée et efficace des entrées. Les développeurs qui connaissent cette fonction peuvent produire des logiciels plus fiables et plus sécurisés qui protègent contre les vulnérabilités liées aux entrées fréquemment rencontrées.