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.
참고 항목
참조
fscanf, _fscanf_l, fwscanf, _fwscanf_l
scanf, _scanf_l, wscanf, _wscanf_l