Partager via


gets, _getws

Obtient une ligne du flux stdin Des versions plus sécurisées de ces fonctions sont disponibles. Consultez gets_s, _getws_s.

Important

Ces fonctions sont obsolètes. Depuis Visual Studio 2015, elles ne sont pas disponibles dans la bibliothèque CRT. Les versions sécurisées de ces fonctions, gets_s et _getws_s, sont toujours disponibles. Pour plus d’informations sur ces fonctions alternatives, consultez gets_s, _getws_s.

Important

Cette API ne peut pas être utilisée dans les applications qui s’exécutent dans le Windows Runtime. Pour plus d’informations, consultez Fonctions CRT non prises en charge dans les applications de la plateforme Windows universelle.

Syntaxe

char *gets(
   char *buffer
);
wchar_t *_getws(
   wchar_t *buffer
);
template <size_t size>
char *gets(
   char (&buffer)[size]
); // C++ only
template <size_t size>
wchar_t *_getws(
   wchar_t (&buffer)[size]
); // C++ only

Paramètres

buffer
Emplacement de stockage pour une chaîne entrée.

Valeur retournée

Retourne son argument en cas de réussite. Un pointeur NULL indique une condition d’erreur ou de fin de fichier. Utilisez ferror ou feof déterminez celui qui s’est produit. Si buffer c’est NULLle cas, ces fonctions appellent un gestionnaire de paramètres non valide, comme décrit dans la validation des paramètres. Si l'exécution est autorisée à se poursuivre, ces fonctions retournent NULL et définissent errno avec la valeur EINVAL.

Notes

La fonction gets lit une ligne dans le flux d’entrée standard stdin et la stocke dans buffer. La ligne se compose de tous les caractères jusqu’à et y compris le premier caractère de saut de ligne (« \n »). gets remplace ensuite le caractère de saut de ligne par un caractère null (« \0 ») avant de retourner la ligne. En revanche, la fonction fgets conserve le caractère de saut de ligne. _getws est une version à caractères larges de gets ; son argument et sa valeur de retour sont des chaînes à caractères larges.

Important

Étant donné qu’il n’existe aucun moyen de limiter le nombre de caractères lus par gets, une entrée non approuvée peut facilement entraîner des dépassements de mémoire tampon. Utilisez fgets à la place.

En C++, ces fonctions ont des surcharges de modèle qui appellent les équivalents plus récents et sécurisés de ces fonctions. Pour plus d'informations, consultez Sécuriser les surcharges de modèle.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Mappages de routines de texte générique

Routine TCHAR.H _UNICODE et _MBCS non définis _MBCS défini _UNICODE défini
_getts gets gets _getws

Spécifications

Routine En-tête requis
gets <stdio.h>
_getws <stdio.h> ou <wchar.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Exemple

// crt_gets.c
// compile with: /WX /W3

#include <stdio.h>

int main( void )
{
   char line[21]; // room for 20 chars + '\0'
   gets( line );  // C4996
   // Danger: No way to limit input to 20 chars.
   // Consider using gets_s instead.
   printf( "The line entered was: %s\n", line );
}

Les entrées de plus de 20 caractères dépassent la mémoire tampon de ligne et provoquent presque certainement le blocage du programme.


Hello there!The line entered was: Hello there!

Voir aussi

E/S de flux
fgets, fgetws
fputs, fputws
puts, _putws