gets_s, _getws_s

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

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

  • [out] buffer
    Ubicación de almacenamiento de la cadena de entrada.

  • [in] 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 el primer carácter que se lee es el carácter de final de archivo, se almacena un carácter nulo al principio de buffer y se devuelve NULL.

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

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 nulo, estas funciones invocan el 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 la necesidad 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, vea Sobrecargas de plantilla seguras.

Asignaciones de rutina de texto genérico

Rutina TCHAR.H

_UNICODE y _MBCS no definidos

_MBCS definido

_UNICODE definido

_getts

gets_s

gets_s

_getws

Requisitos

Rutina

Encabezado necesario

gets_s

<stdio.h>

_getws

<stdio.h> o <wchar.h>

La consola no se admite en las aplicaciones de Tienda Windows. Se deben redirigir los identificadores estándar de flujo que están asociados a la consola, stdin, stdout y stderr, antes de que las funciones en tiempo de ejecución de C puedan usarlos en aplicaciones de Tienda Windows. Para obtener más información sobre compatibilidad, vea 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 );
}
  

Equivalente en .NET Framework

System::Console::Read

Vea también

Referencia

E/S de secuencia

gets, _getws

fgets, fgetws

fputs, fputws

puts, _putws