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 NULL
le 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!