다음을 통해 공유


sscanf, _sscanf_l, swscanf, _swscanf_l

서식이 지정 된 문자열에서 데이터를 읽기.이러한 함수를 더 안전한 버전을 사용할 수 있습니다. 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 ] ... 
);

매개 변수

  • buffer
    저장 된 데이터

  • format
    컨트롤 서식 문자열입니다.자세한 내용은 형식 사양을.

  • argument
    선택적 인수

  • locale
    사용 하는 로케일

반환 값

각이 함수를 성공적으로 변환 하 고 지정 된 필드 수를 반환 합니다. 반환 값이 지정 되었지만 읽을 필드는 포함 되지 않습니다.반환 값이 0 이면 필드가 없는 할당 된 나타냅니다.반환 값이 EOF 오류에 대 한 첫 번째 변환 전에 문자열의 끝에 도달 하는 경우.

경우 buffer 또는 format 되는 NULL 포인터를 잘못 된 매개 변수 처리기 호출에서에 설명 된 대로 매개 변수 유효성 검사.이 함수 실행을 계속 수 있으면-1을 반환 합니다. 설정 하 고 errno 에 EINVAL.

이러한 문제 및 기타 오류 코드에 대 한 내용은 _doserrno, errno, _sys_errlist, 및 _sys_nerr.

설명

sscanf 함수에서 데이터를 읽고 buffer 각각 사용 하 여 지정 된 위치에 argument.모든 argument 변수를 형식 지정자에 해당 하는 형식에 대 한 포인터 이어야 합니다 format.format 해석 하는 입력 필드와 같은 가진 인수 컨트롤 형성 하 고 작동 하는 format 인수에는 scanf 함수.중복 문자열 사이 복사 사용 하는 경우 동작이 정의 되지 않습니다.

보안 정보보안 정보

문자열을 읽을 때 sscanf, 너비를 항상 지정은 %s 형식 (예를 들어, "%32s" 대신 "%s"). 그렇지 않으면 부적절 하 게 서식이 지정 된 입력 버퍼 오버런으로 인해 쉽게 발생할 수 있습니다.

swscanf와이드 문자 버전입니다 sscanf. 한 인수 swscanf 와이드 문자 문자열입니다.sscanf멀티 바이트 문자를 처리 하지 않습니다.swscanf유니코드 전자 16 진수 또는 "호환성 영역" 문자를 처리 하지 않습니다.그렇지 않으면 swscanf 및 sscanf 동일 하 게 동작 합니다.

버전으로 이러한 함수는 _l 접미사는 현재 스레드의 로캘 대신 전달 된 로캘 매개 변수를 사용할 경우를 제외 하 고 동일 합니다.

일반 텍스트 루틴 매핑

TCHAR입니다.H 루틴

_UNICODE 및 _Mbcs가 정의 되지 않았습니다.

_Mbcs가 정의

_Unicode가 정의

_stscanf

sscanf

sscanf

swscanf

_stscanf_l

_sscanf_l

_sscanf_l

_swscanf_l

요구 사항

루틴

필수 헤더

sscanf, _sscanf_l

<stdio.h>

swscanf, _swscanf_l

<stdio.h> 또는 <wchar.h>

추가 호환성 정보를 참조 하십시오. 호환성 소개에서 합니다.

예제

// 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 );
}
  

해당 .NET Framework 항목

참조 하십시오 Parse 메서드 같은 System::Double::Parse.

참고 항목

참조

스트림 I/O

fscanf, _fscanf_l, fwscanf, _fwscanf_l

scanf, _scanf_l, wscanf, _wscanf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

_snwprintf_l, _snwprintf, _snprintf_l, _snprintf