gets_s, _getws_sgets_s, _getws_s

Obtiene una línea de la secuencia stdin .Gets a line from the stdin stream. Estas versiones de gets, _getws tienen mejoras de seguridad, como se describe en Características de seguridad de CRT.These versions of gets, _getws have security enhancements, as described in Security Features in the CRT.

SintaxisSyntax

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ámetrosParameters

búferbuffer
Ubicación de almacenamiento de la cadena de entrada.Storage location for input string.

sizeInCharacterssizeInCharacters
Tamaño del búfer.The size of the buffer.

Valor devueltoReturn Value

Devuelve el búfer si se realiza correctamente.Returns buffer if successful. Un puntero NULL indica una condición de error o de fin de archivo.A NULL pointer indicates an error or end-of-file condition. Utilice ferror o feof para determinar qué resultado se ha producido.Use ferror or feof to determine which one has occurred.

ObservacionesRemarks

La función gets_s Lee una línea del flujo de entrada estándar stdin y la almacena en el búfer.The gets_s function reads a line from the standard input stream stdin and stores it in buffer. La línea consta de todos los caracteres hasta el primer carácter de línea nueva ('\n'), este último incluido.The line consists of all characters up to and including the first newline character ('\n'). a continuación, gets_s reemplaza el carácter de nueva línea por un carácter nulo (' \ 0 ') antes de devolver la línea.gets_s then replaces the newline character with a null character ('\0') before returning the line. En cambio, la función fgets_s conserva el carácter de nueva línea.In contrast, the fgets_s function retains the newline character.

Si el primer carácter que se lee es el carácter de final de archivo, se almacena un carácter nulo al principio del búfer y se devuelve null .If the first character read is the end-of-file character, a null character is stored at the beginning of buffer and NULL is returned.

_getws_s es una versión con caracteres anchos de gets_s; su argumento y el valor devuelto son cadenas de caracteres anchos._getws_s is a wide-character version of gets_s; its argument and return value are wide-character strings.

Si buffer es null o sizeInCharacters es menor o 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.If buffer is NULL or sizeInCharacters is less than or equal to zero, or if the buffer is too small to contain the input line and null terminator, these functions invoke an invalid parameter handler, as described in Parameter Validation. Si la ejecución puede continuar, estas funciones devuelven null y establecen errno en ERANGE.If execution is allowed to continue, these functions return NULL and set errno to 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.In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically (eliminating the need to specify a size argument) and they can automatically replace older, non-secure functions with their newer, secure counterparts. Para obtener más información, vea Sobrecargas de plantilla seguras.For more information, see Secure Template Overloads.

De forma predeterminada, el ámbito de este estado global de esta función es la aplicación.By default, this function's global state is scoped to the application. Para cambiar esto, vea estado global en CRT.To change this, see Global state in the CRT.

Asignaciones de rutina de texto genéricoGeneric-Text Routine Mappings

Rutina TCHAR.HTCHAR.H routine _UNICODE y _MBCS no definidos_UNICODE & _MBCS not defined _MBCS definido_MBCS defined _UNICODE definido_UNICODE defined
_getts_s_getts_s gets_sgets_s gets_sgets_s _getws_s_getws_s

RequisitosRequirements

RutinaRoutine Encabezado necesarioRequired header
gets_sgets_s <stdio.h><stdio.h>
_getws_s_getws_s <stdio.h> o <wchar.h><stdio.h> or <wchar.h>

La consola no se admite en aplicaciones de Plataforma universal de Windows (UWP).The console is not supported in Universal Windows Platform (UWP) apps. Los identificadores de flujo estándar que están asociados a la consola, stdin, stdouty stderrdeben redirigirse antes de que las funciones en tiempo de ejecución de C puedan usarlos en aplicaciones para UWP.The standard stream handles that are associated with the console, stdin, stdout, and stderr, must be redirected before C run-time functions can use them in UWP apps. Para obtener información adicional sobre compatibilidad, consulte Compatibilidad.For additional compatibility information, see Compatibility.

EjemploExample

// 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énSee also

E/S de secuenciaStream I/O
Obtiene _getwsgets, _getws
fgets, fgetwsfgets, fgetws
fputs, fputwsfputs, fputws
puts, _putwsputs, _putws