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. Format 인수는 입력 필드의 해석을 제어 하 고 scanf 함수에 대 한 format 인수와 동일한 폼 및 함수를 포함 합니다.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.

Scanf 형식 필드 문자에 대 한 자세한 내용은 Scanf 형식 필드 문자를 참조 하세요.For information about scanf type field characters, see scanf Type Field Characters. Scanf 서식 지정 필드에 대 한 자세한 내용은 서식 지정 필드를 참조 하세요.For information about scanf format specification fields, see Format Specification Fields.


Sscanf를 사용 하 여 문자열을 읽을 때 항상 % s 형식에 대 한 너비를 지정 합니다 (예: "% s" 대신 "% 32s" ). 그렇지 않으면 형식이 잘못 지정 된 입력으로 인해 버퍼 오버런이 발생할 수 있습니다.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.

swscanfsscanf의 와이드 문자 버전입니다. 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