_snscanf_s
, _snscanf_s_l
, _snwscanf_s
_snwscanf_s_l
문자열에서 지정된 길이의 형식이 지정된 데이터를 읽습니다. 이러한 함수는 CRT의 _snwscanf
_snscanf_l
_snwscanf_l
_snscanf
보안 기능에 설명된 대로 향상된 보안 기능을 갖춘 버전입니다.
구문
int __cdecl _snscanf_s(
const char * input,
size_t length,
const char * format [, argument_list]
);
int __cdecl _snscanf_s_l(
const char * input,
size_t length,
const char * format,
_locale_t locale [, argument_list]
);
int __cdecl _snwscanf_s(
const wchar_t * input,
size_t length,
const wchar_t * format [, argument_list]
);
int __cdecl _snwscanf_s_l(
const wchar_t * input,
size_t length,
const wchar_t * format,
_locale_t locale [, argument_list]
);
매개 변수
input
검사할 입력 문자열입니다.
length
input
에서 검사할 문자 수입니다.
format
하나 이상의 형식 지정자입니다.
locale
사용할 로캘입니다.
argument_list
형식 문자열에 따라 할당할 선택적 인수입니다.
반환 값
두 함수는 모두 성공적으로 변환되고 할당된 필드 수를 반환합니다. 반환 값에는 읽었으나 할당되지 않은 필드가 포함되지 않습니다. 반환 값이 0이면 할당된 필드가 없음을 나타냅니다. 오류가 발생하거나 첫 번째 변환 전에 문자열의 끝에 도달할 경우 반환 값은 EOF
입니다. 자세한 내용은 , , _sscanf_s_l
swscanf_s
_swscanf_s_l
를 참조하세요.sscanf_s
포인터이거나 format
포인터인 NULL
경우 input
매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용된 경우, 이러한 함수는 EOF
를 반환하고 errno
를 EINVAL
로 설정합니다.
이러한 오류 코드 및 기타 오류 코드에 대한 자세한 내용은 , _doserrno
, _sys_errlist
및_sys_nerr
를 참조하세요errno
.
설명
이 함수는 입력 문자열에서 검사할 고정된 수의 문자를 지정할 수 있다는 점을 제외하고 다음과 같습니다 sscanf_s
. 자세한 내용은 , , _sscanf_s_l
swscanf_s
_swscanf_s_l
를 참조하세요.sscanf_s
c, C, s, S 및 [형식 필드 문자에 버퍼 크기 매개 변수가 필요합니다. 자세한 내용은 scanf 형식 필드 문자를 참조하세요.
참고 항목
크기 매개 변수는 size_t
가 아니라 unsigned
형식입니다.
_l
접미사가 있는 이러한 함수 버전은 현재 스레드 로캘 대신 전달된 로캘 매개 변수를 사용하는 경우를 제외하고는 동일합니다.
일반 텍스트 루틴 매핑
Tchar.h 루틴 | _UNICODE 및 _MBCS 정의되지 않음 |
정의된 _MBCS |
정의된 _UNICODE |
---|---|---|---|
_sntscanf_s |
_snscanf_s |
_snscanf_s |
_snwscanf_s |
_sntscanf_s_l |
_snscanf_s_l |
_snscanf_s_l |
_snwscanf_s_l |
요구 사항
루틴에서 반환된 값 | 필수 헤더 |
---|---|
_snscanf_s , _snscanf_s_l |
<stdio.h> |
_snwscanf_s , _snwscanf_s_l |
<stdio.h> 또는 <wchar.h> |
호환성에 대한 자세한 내용은 호환성을 참조하세요.
예시
// crt_snscanf_s.c
// This example scans a string of
// numbers, using both the character
// and wide character secure versions
// of the snscanf function.
#include <stdio.h>
int main( )
{
char str1[] = "15 12 14...";
wchar_t str2[] = L"15 12 14...";
char s1[3];
wchar_t s2[3];
int i;
float fp;
i = _snscanf_s( str1, 6, "%s %f", s1, 3, &fp);
printf_s("_snscanf_s converted %d fields: ", i);
printf_s("%s and %f\n", s1, fp);
i = _snwscanf_s( str2, 6, L"%s %f", s2, 3, &fp);
wprintf_s(L"_snwscanf_s converted %d fields: ", i);
wprintf_s(L"%s and %f\n", s2, fp);
}
_snscanf_s converted 2 fields: 15 and 12.000000
_snwscanf_s converted 2 fields: 15 and 12.000000