logo

fgets() et gets() en langage C

Pour lire une valeur de chaîne avec des espaces, nous pouvons utiliser get() ou fgets() en langage de programmation C. Ici, nous verrons quelle est la différence entre gets() et fgets().

fgets()

fgets() lit une ligne du flux spécifié et la stocke dans la chaîne pointée par str. Il s'arrête lorsque (n-1) caractères sont lus, le caractère de nouvelle ligne est lu ou la fin du fichier est atteinte, selon la première éventualité.



Syntaxe

char * fgets  (char * str , int n , FILE * stream );>

Paramètres

    str : pointeur vers un tableau de caractères où la chaîne lue est copiée. n : nombre maximum de caractères à copier dans str (y compris le caractère nul de fin). *stream : pointeur vers un objet FILE qui identifie un flux d'entrée.

Remarque : entrée standard peut être utilisé comme argument pour lire à partir de l’entrée standard.

Valeur de retour

  • La fonction fgets() renvoie un pointeur vers la chaîne où l'entrée est stockée.

Caractéristiques de fgets()

  • Il suit certains paramètres tels que la longueur maximale, la mémoire tampon et la référence du périphérique d'entrée.
  • C'est sûr à utiliser car il vérifie la limite du tableau.
  • Il continue à lire jusqu'à ce qu'un nouveau caractère de ligne soit rencontré ou jusqu'à la limite maximale du tableau de caractères.

Exemple de fgets()

Disons que le nombre maximum de caractères est de 15 et que la longueur d'entrée est supérieure à 15, mais fgets() ne lira que 15 caractères et l'imprimera.

C








// C program to illustrate fgets()> #include> #define MAX 15> int> main()> {> >// defining buffer> >char> buf[MAX];> >// using fgets to take input from stdin> >fgets>(buf, MAX, stdin);> >printf>(>'string is: %s '>, buf);> >return> 0;> }>

>

>

Puisque fgets() lit les entrées de l'utilisateur, nous devons fournir des entrées pendant l'exécution.

langage Java de base
 Input: Hello and welcome to techcodeview.com Output: string is: Hello and welc>

obtient()

Lit les caractères de l'entrée standard (stdin) et les stocke sous forme de chaîne C dans str jusqu'à ce qu'un caractère de nouvelle ligne ou la fin du fichier soit atteint.

  • Son utilisation n'est pas sûre car elle ne vérifie pas les limites du tableau.
  • Il est utilisé pour lire les chaînes de l'utilisateur jusqu'à ce qu'aucun caractère de nouvelle ligne ne soit rencontré.

Syntaxe

char * gets ( char * str  );>

Paramètres

    str : Pointeur vers un bloc de mémoire (tableau de caractères) où la chaîne lue est copiée sous forme de chaîne C.

Valeur de retour

  • La fonction renvoie un pointeur vers la chaîne où l'entrée est stockée.

Exemple de get()

Supposons que nous ayons un tableau de caractères de 15 caractères et que l'entrée soit supérieure à 15 caractères, gets() lira tous ces caractères et les stockera dans une variable. Étant donné que gets() ne vérifie pas la limite maximale de caractères d'entrée, le compilateur peut à tout moment renvoyer une erreur de dépassement de tampon.

C++




// C program to illustrate> // gets()> #include> #define MAX 15> int> main()> {> >// defining buffer> >char> buf[MAX];> >printf>(>'Enter a string: '>);> >// using gets to take string from stdin> >gets>(buf);> >printf>(>'string is: %s '>, buf);> >return> 0;> }>

>

>

Puisque gets() lit les entrées de l’utilisateur, nous devons fournir des entrées pendant l’exécution.

 Input : Hello and welcome to techcodeview.com Output : Hello and welcome to techcodeview.com>

Conclusion

Les fonctions fgets() et gets() peuvent être utilisées pour lire une entrée de chaîne à partir d'une entrée standard. La principale différence entre la fonction fgets() et la fonction gets() est que la fonction fgets() permet à l'utilisateur de spécifier le nombre maximum de caractères à lire et nous pouvons également modifier le flux d'entrée en n'importe quel fichier dans fgets().