scanf 폭 사양
이 정보를 적용 하 여 형식 문자열을 해석 하는 scanf 함수의 보안 버전을 포함 하 여, 가족 scanf_s.일반적으로 이러한 함수는 입력된 스트림에서 토큰의 시퀀스로 나뉩니다 가정 합니다.토큰의 자연 끝 부분으로 지정 된 숫자 텍스트로 변환 될 수 없는 첫 번째 문자는 숫자 데이터 형식에서 숫자 형식 또는 공백 문자 (공백, 탭 또는 줄 바꿈)로 구분 됩니다.그러나 너비 지정 될 토큰의 자연 스러운 끝나기 전에 중단 하려면 입력의 구문 분석을 사용할 수 있습니다.
폭 사양 구성 됩니다 문자 사이 % 및 형식 필드 지정자를 호출 하는 양의 정수를 포함할 수 있습니다는 폭 필드 및 필드의 형식 한정자로 간주 될 수 있습니다, 필드의 크기를 나타내는 하나 이상의 문자 여부 표시 같은 정수 형식입니다 짧은 또는 긴.이러한 문자는 크기가 접두사로 라고 합니다.
너비 필드
폭 필드에 해당 필드를 읽을 수 최대 문자 수를 제어 하는 10 진수 양의 정수입니다.두 개 이상의 폭 문자를 변환 하 고 저장할 때 해당 argument.보다 적은 폭 문자가 있을 수 있습니다 읽기에 따라 지정 된 형식에서 변환할 수 없는 문자 또는 공백 문자 (공백, 탭 또는 줄 바꿈) 전에 발생 하는 경우 폭 에 도달.
이러한 함수의 보안 버전에서 필요한 버퍼 크기가 인수에서 서로 다른 너비 지정 됩니다 (즉, scanf_s, wscanf_s등.).다음 예제에서는 폭 사양 20 보다는 입력된 스트림에서 읽을 수 20 자까지 표시 합니다.버퍼 길이 21, 방 가능한 20 문자를 더한 null 종결자를 포함 됩니다.
char str[21];
scanf_s("%20s", str, 21);
경우는 폭 필드가 사용 되지 않습니다 scanf_s 전체 토큰 문자열에 읽을 시도 합니다.지정 된 크기는 전체 토큰을 저장할 수 없는 경우 아무 것도 대상 문자열에 작성 됩니다.경우는 폭 필드를 지정 하면 다음 첫 번째 폭 함께 null 종료 문자는 대상 문자열에 문자는 토큰을 작성 합니다.
크기 접두사
선택적 접두사 h, l, ll, I64, 및 L 의 크기를 나타낼는 argument (long 또는 short를 단일 바이트 문자를 와이드 형식 문자에 게 수정에 따라).이러한 형식 사양을 문자 형식 문자를 사용 하는 scanf 또는 wscanf 함수는 다음 표에 나와 있는 것 처럼 해석의 인수를 지정 합니다.형식 접두사 I64 Microsoft 확장 이며 ANSI 호환 되지 않습니다.형식 문자와 그 의미가 "문자를 scanf 함수에 대 한 입력"의 표에 설명한 scanf 형식 필드 문자.
[!참고]
해당 h, l, 및 L 접두사 입력 데이터를 사용 하는 경우 Microsoft 확장 됩니다 char.
Wscanf 서식 유형 지정자 및 scanf에 대 한 크기 접두사
지정 대상 |
접두사를 사용 합니다. |
형식 지정자 |
---|---|---|
double |
l |
e, E, f, g, or G |
long double (double와 같음) |
L |
e, E, f, g, or G |
long int |
l |
d, i, o, x, or X |
부호 없는 long int |
l |
u |
오래 오래 |
ll |
d, i, o, x, or X |
short int |
h |
d, i, o, x, or X |
unsigned short int |
h |
u |
__int64 |
I64 |
d, i, o, u, x, or X |
싱글 바이트 문자 사용scanf |
h |
c or C |
싱글 바이트 문자 사용wscanf |
h |
c or C |
와이드 사용scanf |
l |
c or C |
와이드 사용wscanf |
l |
c, or C |
단일 바이트-문자 문자열을scanf |
h |
s or S |
단일 바이트-문자 문자열을wscanf |
h |
s or S |
와이드 문자 문자열을scanf |
l |
s or S |
와이드 문자 문자열을wscanf |
l |
s or S |
다음 예제에서는 사용 h 및 l 와 scanf_s 함수 및 wscanf_s 기능:
scanf_s( "%ls", &x, 2 ); // Read a wide-character string
wscanf_s( "%hC",&x, 2 ); // Read a single-byte character
안전 하지 않은 함수에서 사용 하는 경우는 scanf 제품군, 버퍼 길이를 앞의 인수를 나타내는 크기 매개 변수를 생략 합니다.
읽기 Undelimited 문자열
공백에서 구분 없는 문자열을 읽을 수 문자를 대괄호 안에 문자 ()를 대체할 수는 s (string) 형식 문자.괄호 안의 문자 집합을 제어 문자열 형식으로 라고 합니다.해당 입력된 필드에 첫 번째 문자는 제어 문자열에 표시 되지 않습니다 읽기입니다.집합의 첫 번째 문자는 캐럿이 있는 경우 (^), 효과 반대입니다: 입력된 필드에 첫 번째 문자 문자 집합의 나머지 부분에서 나타나지 읽기입니다.
참고 [a-z] % 및 [z a] % 와 동일 하 게 해석 됩니다 %[abcde...z.이 공통입니다 scanf 함수 확장 하지만 참고 ANSI 표준에서 필요 하지 않을 것입니다.
읽기 종결 되지 않은 문자열
종료 null 문자 ('\ 0')를 저장 하지 않고 문자열을 저장할 수는 사양 %nc 는 n 10 진수 정수입니다.이 경우에 c 형식 문자 인수를 문자 배열에 대 한 포인터 임을 나타냅니다.다음 n 문자가 지정 된 위치에 입력된 스트림에서 읽이 되 고 없음 null 문자 ('\ 0')를 추가 합니다.경우 n 지정 하지 않으면 기본값은 1입니다.
Scanf 필드를 읽는 중지할 시기
scanf 함수의 각 입력된 필드를 문자 단위로 검색 합니다.공백 문자에 대 한 다양 한 이유 때문에 도달 하기 전에 특정 입력된 필드를 읽는 중지 될 수 있습니다.
지정 된 너비에 도달 했습니다.
다음 문자를 변환할 수 없습니다. 지정 된.
일치 되어야 하는 제어 문자열에서 문자를 다음 문자 충돌 합니다.
다음 문자로 지정 된 문자 집합에 표시 되지 않습니다.
어떠한 이유로 든에 대 한 경우는 scanf 함수 입력된 필드를 읽는 중지, 다음 입력된 필드에서 읽지 않은 첫 번째 문자에서 시작 합니다 간주 됩니다.충돌 하는 문자가 있는 경우 간주 됩니다 읽지 않은 다음 입력된 필드의 첫 번째 문자 또는 입력된 스트림의의 후속 읽기 작업의 첫 번째 문자입니다.
참고 항목
참조
scanf, _scanf_l, wscanf, _wscanf_l