gets_s
, _getws_s
Obtiene una línea del flujo stdin
. Estas versiones de , _getws
tienen 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 buffer
y 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 plantilla 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!
Vea también
E/S de secuencia
gets
, _getws
fgets
, fgetws
fputs
, fputws
puts
, _putws