vwscanf, vfwscanf, vswscanf, vwscanf_s, vfwscanf_s, vswscanf_s
| 헤더 <wchar.h>
|
||
int vwscanf( const wchar_t *restrict format, va_list vlist );
|
에 정의됨 (1) | (C99 이후) |
int vfwscanf( FILE *restrict stream,
const wchar_t *restrict format, va_list vlist );
|
(2) | (C99 이후) |
int vswscanf( const wchar_t *restrict buffer,
const wchar_t *restrict format, va_list vlist );
|
(3) | (C99 이후) |
int vwscanf_s( const wchar_t *restrict format, va_list vlist );
|
(4) | (C11 이후) |
int vfwscanf_s( FILE *restrict stream,
const wchar_t *restrict format, va_list vlist );
|
(5) | (C11 이후) |
int vswscanf_s( const wchar_t *restrict buffer,
const wchar_t *restrict format, va_list vlist );
|
(6) | (C11 이후) |
다양한 소스에서 데이터를 읽고, format에 따라 해석하며, 그 결과를 vlist에 정의된 위치에 저장합니다.
stream에서 데이터를 읽습니다.buffer에서 데이터를 읽습니다. 문자열의 끝에 도달하는 것은 fwscanf%c과 동일하지만, %s, %[ 변환 지정자는 각각 두 개의 인수(일반적인 포인터와 수신 배열의 크기를 나타내는 rsize_t 형식의 값, %lc로 단일 와이드 문자를 읽는 경우 1일 수 있음)를 기대하며, 또한 다음 오류들이 런타임에 감지되어 현재 설치된 제약 조건 처리기 함수를 호출한다는 점이 다릅니다:
- 포인터 형식의 인수 중 하나가 널 포인터인 경우
format,stream, 또는buffer가 널 포인터인 경우- %c, %s, 또는 %[로 쓰여질 문자 수에 종료 널 문자를 더한 값이 각 해당 변환 지정자에 대해 제공된 두 번째(rsize_t) 인수를 초과하는 경우
- 선택적으로, 알 수 없는 변환 지정자와 같이 감지 가능한 다른 오류
- 모든 경계 검사 함수와 마찬가지로,
vwscanf_s,vfwscanf_s,vswscanf_s는 구현이__STDC_LIB_EXT1__를 정의하고 사용자가__STDC_WANT_LIB_EXT1__를 정수 상수1로 정의한 후 <stdio.h>를 포함하는 경우에만 사용 가능함이 보장됩니다.
매개변수
| stream | - | 데이터를 읽을 입력 파일 스트림 |
| buffer | - | 널 종료 와이드 문자열을 가리키는 포인터 |
| format | - | 입력을 읽는 방법을 지정하는 널 종료 와이드 문자열을 가리키는 포인터 |
| vlist | - | 수신 인수를 포함하는 가변 인수 목록. |
format 문자열은 다음으로 구성됩니다:
%를 제외한 공백이 아닌 와이드 문자: 형식 문자열의 각 문자는 입력 스트림의 정확히 하나의 동일한 문자를 소비하거나, 스트림의 다음 문자가 동일하지 않으면 함수를 실패하게 합니다.- 공백 문자: 형식 문자열의 단일 공백 문자는 입력에서 사용 가능한 모든 연속 공백 문자를 소비합니다(iswspace를 루프로 호출하는 것처럼 결정됨). 형식 문자열에서
"\n"," ","\t\t"또는 기타 공백 사이에는 차이가 없습니다. - 변환 지정. 각 변환 지정은 다음 형식을 가집니다:
- 도입
%문자.
- 도입
- (선택 사항) 할당 억제 문자
*. 이 옵션이 있으면 함수는 변환 결과를 수신 인수에 할당하지 않습니다.
- (선택 사항) 할당 억제 문자
- (선택 사항) 최대 필드 너비를 지정하는 정수(0보다 큼), 즉 현재 변환 지정으로 변환을 수행할 때 함수가 소비할 수 있는 최대 문자 수입니다.
%s와%[는 너비가 제공되지 않으면 버퍼 오버플로우를 일으킬 수 있습니다.
- (선택 사항) 최대 필드 너비를 지정하는 정수(0보다 큼), 즉 현재 변환 지정으로 변환을 수행할 때 함수가 소비할 수 있는 최대 문자 수입니다.
- (선택 사항) 길이 수정자: 수신 인수의 크기, 즉 실제 대상 유형을 지정합니다. 변환 정확도 및 오버플로 규칙에 영향을 미칩니다. 기본 대상 유형은 각 변환 유형마다 다릅니다(아래 표 참조).
- 변환 형식 지정자.
사용 가능한 형식 지정자는 다음과 같습니다:
| 변환 지정자 |
설명 | 예상 인수 유형 | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| 길이 수정자→ | hh
|
h
|
없음 | l
|
ll
|
j
|
z
|
t
|
L
| |
| C99부터만 사용 가능→ | 예 | 예 | 예 | 예 | 예 | |||||
%
|
리터럴
%와 일치합니다. |
N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
c
|
문자 또는 문자의 시퀀스와 일치합니다.
|
N/A | N/A | char* |
wchar_t* |
N/A | N/A | N/A | N/A | N/A |
s
|
공백이 아닌 문자의 시퀀스(문자열)와 일치합니다.
| |||||||||
[집합 ]
|
문자 집합에서 비어 있지 않은 문자 시퀀스와 일치합니다.
| |||||||||
d
|
십진 정수와 일치합니다.
|
signed char* 또는 unsigned char* |
signed short* 또는 unsigned short* |
signed int* 또는 unsigned int* |
signed long* 또는 unsigned long* |
signed long long* 또는 unsigned long long* |
intmax_t* 또는 uintmax_t* |
size_t* |
ptrdiff_t* |
N/A |
b (C23)
|
부호 없는 이진 정수와 일치합니다.
| |||||||||
i
|
정수와 일치합니다.
| |||||||||
u
|
부호 없는 십진 정수와 일치합니다.
| |||||||||
o
|
부호 없는 팔진 정수와 일치합니다.
| |||||||||
xX
|
부호 없는 십육진 정수와 일치합니다.
| |||||||||
n
|
지금까지 읽은 문자 수를 반환합니다.
| |||||||||
a (C99)A (C99)eEfF (C99)gG
|
부동소수점 수와 일치합니다.
|
N/A | N/A | float* |
double* |
N/A | N/A | N/A | N/A | long double* |
p
|
포인터를 정의하는 구현 정의 문자 시퀀스와 일치합니다.
|
N/A | N/A | void** |
N/A | N/A | N/A | N/A | N/A | N/A |
| 참고 | ||||||||||
|
길이 지정자 변환 지정자 고정 너비 정수 유형(int8_t 등)에 대한 올바른 변환 지정자는 헤더 <inttypes.h>에 정의되어 있습니다(하지만 SCNdMAX, SCNuMAX 등은 각 변환 지정자의 동작 후에는 시퀀스 포인트가 있습니다; 이를 통해 여러 필드를 동일한 "싱크" 변수에 저장할 수 있습니다. 지수가 있는 자릿수 없이 끝나는 불완전한 부동소수점 값을 구문 분석할 때, 예를 들어 변환 지정자 변환 지정이 유효하지 않으면 동작이 정의되지 않습니다. | ||||||||||
반환값
참고
이 함수들은 모두 va_arg를 호출할 수 있으며, 반환 후 arg의 값은 불확정입니다. 이 함수들은 va_end를 호출하지 않으므로 호출자가 호출해야 합니다.
예제
| 이 섹션은 불완전합니다 이유: 예제 없음 |
참조
- C11 표준 (ISO/IEC 9899:2011):
- 7.29.2.6 vfwscanf 함수 (p: 418)
- 7.29.2.8 vswscanf 함수 (p: 419)
- 7.29.2.10 vwscanf 함수 (p: 420)
- K.3.9.1.7 vfwscanf_s 함수 (p: 632-633)
- K.3.9.1.10 vswscanf_s 함수 (p: 635-636)
- K.3.9.1.12 vwscanf_s 함수 (p: 637)
- C99 표준 (ISO/IEC 9899:1999):
- 7.24.2.6 vfwscanf 함수 (p: 364)
- 7.24.2.8 vswscanf 함수 (p: 365)
- 7.24.2.10 vwscanf 함수 (p: 366)
같이 보기
(C95)(C95)(C95)(C11)(C11)(C11) |
stdin, 파일 스트림 또는 버퍼에서 형식화된 와이드 문자 입력을 읽습니다 (함수) |
C++ 문서 for vwscanf, vfwscanf, vswscanf
| |