gets_s
, _getws_s
stdin
스트림에서 줄을 가져옵니다. 이러한 버전은 CRT의 _getws
gets
보안 기능에 설명된 대로 향상된 보안 기능을 제공합니다.
구문
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
매개 변수
buffer
입력 문자열에 대한 스토리지 위치입니다.
sizeInCharacters
버퍼 크기입니다.
반환 값
성공하면 buffer
(이)가 반환됩니다. NULL
포인터는 오류 또는 파일 끝 조건을 나타냅니다. 발생한 작업을 사용 ferror
하거나 feof
확인합니다.
설명
gets_s
함수는 표준 입력 스트림 stdin
에서 줄을 읽고 buffer
에 저장합니다. 줄은 첫 번째 줄 바꿈 문자(''\n
)를 포함하여 모든 문자로 구성됩니다. gets_s
그런 다음 줄 바꿈 문자를 null 문자(''\0
)로 바꾼 후 선을 반환합니다. 반대로 fgets_s
함수는 줄 바꿈 문자를 유지합니다.
첫 번째 문자 읽기가 파일 끝 문자인 경우 null 문자는 시작 buffer
부분에 저장되고 NULL
반환됩니다.
_getws_s
는 gets_s
의 와이드 문자 버전입니다. 해당 인수 및 반환 값은 와이드 문자열입니다.
NULL
0보다 작거나 sizeInCharacters
같거나, 버퍼가 너무 작아 입력줄과 null 종결자를 포함할 수 없는 경우 buffer
이러한 함수는 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기를 호출합니다. 계속해서 실행하도록 허용된 경우 이러한 함수는 NULL
을 반환하고 errno를 ERANGE
로 설정합니다.
C++에서는 템플릿 오버로드로 인해 이러한 함수를 사용하는 것이 보다 간단해 집니다. 오버로드는 버퍼 길이를 자동으로 유추할 수 있으며(크기 인수를 지정할 필요가 없어짐), 기존의 비보안 함수를 보다 최신의 보안 대응 함수로 자동으로 바꿀 수 있습니다. 자세한 내용은 안전한 템플릿 오버로드를 참조하세요.
기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.
일반 텍스트 루틴 매핑
TCHAR.H 루틴 |
_UNICODE 및 _MBCS 정의되지 않음 |
정의된 _MBCS |
정의된 _UNICODE |
---|---|---|---|
_getts_s |
gets_s |
gets_s |
_getws_s |
요구 사항
루틴에서 반환된 값 | 필수 헤더 |
---|---|
gets_s |
<stdio.h> |
_getws_s |
<stdio.h> 또는 <wchar.h> |
UWP(유니버설 Windows 플랫폼) 앱에서는 콘솔이 지원되지 않습니다. 콘솔에 연결된 표준 스트림 핸들, stdin
, stdout
및 stderr
은 UWP 앱의 C 런타임 함수에서 사용되기 전에 리디렉션되어야 합니다. 호환성에 대한 자세한 내용은 호환성을 참조하세요.
예시
// 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!
참고 항목
스트림 I/O
gets
, _getws
fgets
, fgetws
fputs
, fputws
puts
, _putws