다음을 통해 공유


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를 반환하고 errnoEINVAL로 설정합니다.

설명

gets 함수는 표준 입력 스트림 stdin에서 줄을 읽고 buffer에 저장합니다. 줄은 첫 번째 줄 바꿈 문자('\n')까지 모든 문자로 구성됩니다. gets 는 줄을 반환하기 전에 줄 바꿈 문자를 null 문자('\0')로 대체합니다. 반대로 fgets 함수는 줄 바꿈 문자를 유지합니다. _getwsgets의 와이드 문자 버전입니다. 해당 인수 및 반환 값은 와이드 문자열입니다.

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!

참고 항목

스트림 I/O
fgets, fgetws
fputs, fputws
puts, _putws