다음을 통해 공유


_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_lswscanf_s_swscanf_s_l를 참조하세요.sscanf_s

포인터이거나 format 포인터인 NULL 경우 input 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용된 경우, 이러한 함수는 EOF를 반환하고 errnoEINVAL로 설정합니다.

이러한 오류 코드 및 기타 오류 코드에 대한 자세한 내용은 , _doserrno, _sys_errlist_sys_nerr 를 참조하세요errno.

설명

이 함수는 입력 문자열에서 검사할 고정된 수의 문자를 지정할 수 있다는 점을 제외하고 다음과 같습니다 sscanf_s. 자세한 내용은 , , _sscanf_s_lswscanf_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

참고 항목

scanf 너비 사양