gets
, _getws
stdin
스트림에서 줄을 가져옵니다. 이러한 함수의 더 안전한 버전을 사용할 수 있습니다. gets_s
, _getws_s
(을)를 참조하세요.
Important
이러한 함수는 사용되지 않습니다. Visual Studio 2015부터 CRT에서 사용할 수 없습니다. 이러한 함수 및 gets_s
_getws_s
함수의 보안 버전은 여전히 사용할 수 있습니다. 이러한 대체 함수에 대한 자세한 내용은 다음_getws_s
을 참조하세요gets_s
.
Important
이 API는 Windows 런타임에서 실행되는 애플리케이션에서 사용할 수 없습니다. 자세한 내용은 유니버설 Windows 플랫폼 앱에서 지원되지 않는 CRT 함수를 참조하세요.
구문
char *gets(
char *buffer
);
wchar_t *_getws(
wchar_t *buffer
);
template <size_t size>
char *gets(
char (&buffer)[size]
); // C++ only
template <size_t size>
wchar_t *_getws(
wchar_t (&buffer)[size]
); // C++ only
매개 변수
buffer
입력 문자열에 대한 스토리지 위치입니다.
반환 값
성공하면 해당 인수를 반환합니다. NULL
포인터는 오류 또는 파일 끝 조건을 나타냅니다. 발생한 작업을 사용 ferror
하거나 feof
확인합니다. 이 경우 buffer
이러한 함수는 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기를 호출합니다.NULL
계속해서 실행하도록 허용된 경우, 이러한 함수는 NULL
를 반환하고 errno
를 EINVAL
로 설정합니다.
설명
gets
함수는 표준 입력 스트림 stdin
에서 줄을 읽고 buffer
에 저장합니다. 줄은 첫 번째 줄 바꿈 문자('\n')까지 모든 문자로 구성됩니다. gets
는 줄을 반환하기 전에 줄 바꿈 문자를 null 문자('\0')로 대체합니다. 반대로 fgets
함수는 줄 바꿈 문자를 유지합니다. _getws
는 gets
의 와이드 문자 버전입니다. 해당 인수 및 반환 값은 와이드 문자열입니다.
Important
읽 gets
은 문자 수를 제한할 방법이 없으므로 신뢰할 수 없는 입력으로 인해 버퍼 오버런이 쉽게 발생할 수 있습니다. 대신 fgets
를 사용하세요.
C++에서 이러한 함수는 보다 최신의 보안 대응 함수를 호출하는 템플릿 오버로드를 갖고 있습니다. 자세한 내용은 안전한 템플릿 오버로드를 참조하세요.
기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.
일반 텍스트 루틴 매핑
TCHAR.H 루틴 | _UNICODE 및 _MBCS 정의되지 않음 |
정의된 _MBCS |
정의된 _UNICODE |
---|---|---|---|
_getts |
gets |
gets |
_getws |
요구 사항
루틴에서 반환된 값 | 필수 헤더 |
---|---|
gets |
<stdio.h> |
_getws |
<stdio.h> 또는 <wchar.h> |
호환성에 대한 자세한 내용은 호환성을 참조하세요.
예시
// crt_gets.c
// compile with: /WX /W3
#include <stdio.h>
int main( void )
{
char line[21]; // room for 20 chars + '\0'
gets( line ); // C4996
// Danger: No way to limit input to 20 chars.
// Consider using gets_s instead.
printf( "The line entered was: %s\n", line );
}
20자보다 긴 입력은 줄 버퍼를 오버런하고 프로그램이 거의 확실하게 충돌합니다.
Hello there!The line entered was: Hello there!