다음을 통해 공유


gets_s, _getws_s

stdin 스트림에서 줄을 가져옵니다. 이러한 버전은 CRT_getwsgets 보안 기능에 설명된 대로 향상된 보안 기능을 제공합니다.

구문

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_sgets_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, stdoutstderr은 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