gets_s, _getws_s

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

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.

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.

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 un controlador de parámetros no válidos, como se describe en validación del parámetro. 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, consulta Secure Template Overloads.

Asignaciones de rutina de texto genérico

Rutina TCHAR.H_UNICODE y _MBCS no definidos_MBCS definido_UNICODE definido
_gettsgets_sgets_s_getws
RutinaEncabezado necesario
gets_s<stdio.h>
_getws<stdio.h> o <wchar.h>

La consola no se admite en las aplicaciones de Tienda Windows 8.x. 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 8.x. Para obtener más información sobre compatibilidad, vea Compatibilidad.

// 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!  

System::Console::Read

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

Mostrar: