sscanf, _sscanf_l, swscanf, _swscanf_lsscanf, _sscanf_l, swscanf, _swscanf_l

문자열에서 형식이 지정된 데이터를 읽습니다.Read formatted data from a string. 이러한 함수의 더 안전한 버전을 사용할 수 있습니다. sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l을 참조하세요.More secure versions of these functions are available; see sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l.


int sscanf(
   const char *buffer,
   const char *format [,
   argument ] ...
int _sscanf_l(
   const char *buffer,
   const char *format,
   locale_t locale [,
   argument ] ...
int swscanf(
   const wchar_t *buffer,
   const wchar_t *format [,
   argument ] ...
int _swscanf_l(
   const wchar_t *buffer,
   const wchar_t *format,
   locale_t locale [,
   argument ] ...

매개 변수Parameters

저장된 데이터Stored data

형식 컨트롤 문자열입니다.Format-control string. 자세한 내용은 형식 사양을 참조하세요.For more information, see Format Specifications.

선택적 인수Optional arguments

사용할 로캘입니다.The locale to use

반환 값Return Value

이러한 각 함수는 모두 성공적으로 변환되고 할당된 필드 수를 반환합니다. 이때 읽혀졌지만 할당되지 않은 필드는 반환 값에 포함되지 않습니다.Each of these functions returns the number of fields successfully converted and assigned; the return value does not include fields that were read but not assigned. 반환 값이 0이면 할당된 필드가 없음을 나타냅니다.A return value of 0 indicates that no fields were assigned. 반환 값은 EOF 오류에 대 한 첫 번째 변환 하기 전에 문자열의 끝에 도달 하는 경우.The return value is EOF for an error or if the end of the string is reached before the first conversion.

경우 버퍼 또는 형식NULL 에 설명 된 대로 포인터, 잘못 된 매개 변수 처리기가 호출 매개 변수 유효성 검사합니다.If buffer or format is a NULL pointer, the invalid parameter handler is invoked, as described in Parameter Validation. 실행을 계속 허용 된, 하는 경우 이러한 함수가-1을 반환 하 고 설정 errnoEINVAL합니다.If execution is allowed to continue, these functions return -1 and set errno to EINVAL.

이러한 오류 코드 및 기타 오류 코드에 대한 내용은 _doserrno, errno, _sys_errlist, 및 _sys_nerr을 참조하세요.For information on these and other error codes, see _doserrno, errno, _sys_errlist, and _sys_nerr.


sscanf 함수에서 데이터를 읽는 버퍼 각각 지정 된 위치에 인수합니다.The sscanf function reads data from buffer into the location given by each argument. 모든 인수 의 형식 지정자에 해당 하는 형식의 변수에 대 한 포인터 여야 합니다 형식합니다.Every argument must be a pointer to a variable with a type that corresponds to a type specifier in format. 형식 인수 컨트롤 입력의 해석은 필드 및 동일한 형태와 기능을 형식 에 대 한 인수는 scanf 함수입니다.The format argument controls the interpretation of the input fields and has the same form and function as the format argument for the scanf function. 중복되는 문자열 간에 복사가 이뤄지면 이 동작은 정의되지 않습니다.If copying takes place between strings that overlap, the behavior is undefined.


문자열을 읽을 때 sscanf, 항상에 대 한 너비를 지정 된 %s 형식 (예를 들어 "%32s" 대신 "%s") 고, 그렇지 않으면 서식이 잘못 지정 된 입력 버퍼 오버런을 쉽게 될 수 있습니다.When reading a string with sscanf, always specify a width for the %s format (for example, "%32s" instead of "%s"); otherwise, improperly formatted input can easily cause a buffer overrun.

swscanf 의 와이드 문자 버전이 sscanf;에 대 한 인수 swscanf 는 와이드 문자 문자열입니다.swscanf is a wide-character version of sscanf; the arguments to swscanf are wide-character strings. sscanf 멀티 바이트 16 진수 문자를 처리 하지 않습니다.sscanf does not handle multibyte hexadecimal characters. swscanf 유니코드 전자 16 진수 또는 "호환성 영역" 문자를 처리 하지 않습니다.swscanf does not handle Unicode full-width hexadecimal or "compatibility zone" characters. 그렇지 않으면 swscanfsscanf 동일 하 게 작동 합니다.Otherwise, swscanf and sscanf behave identically.

있는 이러한 함수 버전은 _l 은 현재 스레드 로캘 대신 전달 된 로캘 매개 변수를 사용 하는 점을 제외 하 고 접미사는 동일 합니다.The versions of these functions with the _l suffix are identical except that they use the locale parameter passed in instead of the current thread locale.

제네릭 텍스트 라우팅 매핑Generic-Text Routine Mappings

TCHAR.H 루틴TCHAR.H routine _UNICODE 및 _MBCS 정의되지 않음_UNICODE & _MBCS not defined _MBCS 정의됨_MBCS defined _UNICODE 정의됨_UNICODE defined
_stscanf_stscanf sscanfsscanf sscanfsscanf swscanfswscanf
_stscanf_l_stscanf_l _sscanf_l_sscanf_l _sscanf_l_sscanf_l _swscanf_l_swscanf_l

요구 사항Requirements

루틴Routine 필수 헤더Required header
sscanf, _sscanf_lsscanf, _sscanf_l <stdio.h><stdio.h>
swscanf, _swscanf_lswscanf, _swscanf_l <stdio.h> 또는 <wchar.h><stdio.h> or <wchar.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.For additional compatibility information, see Compatibility.


// crt_sscanf.c
// compile with: /W3
// This program uses sscanf to read data items
// from a string named tokenstring, then displays them.

#include <stdio.h>

int main( void )
   char  tokenstring[] = "15 12 14...";
   char  s[81];
   char  c;
   int   i;
   float fp;

   // Input various data from tokenstring:
   // max 80 character string:
   sscanf( tokenstring, "%80s", s ); // C4996
   sscanf( tokenstring, "%c", &c );  // C4996
   sscanf( tokenstring, "%d", &i );  // C4996
   sscanf( tokenstring, "%f", &fp ); // C4996
   // Note: sscanf is deprecated; consider using sscanf_s instead

   // Output the data read
   printf( "String    = %s\n", s );
   printf( "Character = %c\n", c );
   printf( "Integer:  = %d\n", i );
   printf( "Real:     = %f\n", fp );
String    = 15
Character = 1
Integer:  = 15
Real:     = 15.000000

참고자료See also

스트림 I/OStream I/O
fscanf, _fscanf_l, fwscanf, _fwscanf_lfscanf, _fscanf_l, fwscanf, _fwscanf_l
scanf, _scanf_l, wscanf, _wscanf_lscanf, _scanf_l, wscanf, _wscanf_l
sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_lsprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l
snprintf, _snprintf, _snprintf_l, _snwprintf, _snwprintf_lsnprintf, _snprintf, _snprintf_l, _snwprintf, _snwprintf_l