Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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!