gets_s, _getws_s

Obtiene una línea del flujo stdin . Estas versiones de , _getwstienen mejoras degets seguridad, como se describe en Características de seguridad de CRT.

Sintaxis

char *gets_s(
   char *buffer,
   size_t sizeInCharacters
);
wchar_t *_getws_s(
   wchar_t *buffer,
   size_t sizeInCharacters
);
template <size_t size>
char *gets_s( char (&buffer)[size] ); // C++ only

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

Parámetros

buffer
Ubicación de almacenamiento de la cadena de entrada.

sizeInCharacters
Tamaño del búfer.

Valor devuelto

Si la operación se realiza correctamente, devuelve buffer. Un puntero NULL indica un error o una condición de fin de archivo. Utilice ferror o feof para determinar qué resultado se ha producido.

Comentarios

La función gets_s lee una línea del flujo de entrada estándar stdin y la almacena en buffer. La línea consta de todos los caracteres hasta el primer carácter de línea nueva ("\n"), este último incluido. A continuación, gets_s reemplaza el carácter de línea nueva con un carácter nulo ("\0") antes de devolver la línea. Por su parte, la función fgets_s conserva el carácter de línea nueva.

Si la primera lectura de caracteres es el carácter final del archivo, se almacena un carácter NULL al principio de buffery NULL se devuelve.

_getws_s es una versión con caracteres anchos de gets_s; el argumento y el valor devuelto son cadenas de caracteres anchos.

Si buffer es o es NULL menor o sizeInCharacters igual que cero, o si el búfer es demasiado pequeño para contener la línea de entrada y el terminador null, estas funciones invocan un controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, estas funciones devuelven NULL y establecen errno en ERANGE.

En C++, el uso de estas funciones se simplifica con las sobrecargas de plantilla; las sobrecargas pueden realizar una inferencia automáticamente de la longitud de búfer (lo que elimina el requisito de especificar un argumento de tamaño) y pueden reemplazar automáticamente funciones anteriores no seguras con sus homólogos seguros más recientes. Para obtener más información, consulte Sobrecargas de plantillas seguras.

De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.

Asignaciones de rutinas de texto genérico

Rutina TCHAR.H _UNICODE y _MBCS no definidos _MBCS definido _UNICODE definido
_getts_s gets_s gets_s _getws_s

Requisitos

Routine Encabezado necesario
gets_s <stdio.h>
_getws_s <stdio.h> o <wchar.h>

La consola no se admite en las aplicaciones de la Plataforma universal de Windows (UWP). Los identificadores de flujo estándar asociados a la consola, stdin, stdout y stderr, se deben redirigir antes de que las funciones en tiempo de ejecución de C puedan usarlos en aplicaciones para UWP. Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Ejemplo

// crt_gets_s.c
// This program retrieves a string from the stdin and
// prints the same string to the console.

#include <stdio.h>

int main( void )
{
   char line[21]; // room for 20 chars + '\0'
   gets_s( line, 20 );
   printf( "The line entered was: %s\n", line );
}
Hello there!
The line entered was: Hello there!

Consulte también

E/S de secuencia
gets, _getws
fgets, fgetws
fputs, fputws
puts, _putws