scanf, _scanf_l, wscanf, _wscanf_l
데이터는 표준 입력 스트림에서 읽기를 포맷합니다.보다 안전한 버전의 이러한 함수를 사용할 수 있습니다. see scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l.
int scanf(
const char *format [,
argument]...
);
int _scanf_l(
const char *format,
locale_t locale [,
argument]...
);
int wscanf(
const wchar_t *format [,
argument]...
);
int _wscanf_l(
const wchar_t *format,
locale_t locale [,
argument]...
);
매개 변수
format
제어 문자열 형식입니다.argument
선택적 인수입니다.locale
사용 하는 로캘.
반환 값
성공적으로 변환 되 고 지정 된 필드의 수를 반환 합니다. 반환 값은 읽을 수 있지만 지정 된 필드가 포함 되지 않습니다.반환 값이 0 이면 필드가 없는 할당 된 것을 나타냅니다.
경우 format 되는 NULL 에 설명 된 대로 포인터에 잘못 된 매개 변수 처리기 호출 매개 변수 유효성 검사.이러한 함수는 실행을 계속 하도록 허용 된 경우, 반환 EOF 및 설정 errno 에 EINVAL.
이러한 문제 및 기타 오류 코드에 대한 내용은 _sys_nerr, _doserrno, errno, _sys_errlist,.
설명
scanf 함수가 표준 입력된 스트림에서 데이터를 읽고 stdin 에서 지정 된 위치에 데이터를 기록 하 고 argument.각 argument 형식 지정자에 해당 하는 형식의 변수에 대한 포인터 이어야 합니다 format.중복 문자열 사이 복사를 사용 하면 동작이 정의 되지 않습니다.
보안 정보 |
---|
문자열을 읽을 때 scanf, 항상 너비를 지정 된 %s 형식 (예를 들어, "%32s" 대신 "%s"). 그렇지 않으면, 부적절 하 게 서식이 지정 된 입력 버퍼 오버런 쉽게 발생할 수 있습니다.또는 사용 하는 것 scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l 또는 fgets. |
wscanf와이드 문자 버전인 scanf. format 한 인수 wscanf 와이드 문자 문자열입니다.wscanf및 scanf 스트림 ANSI 모드에서 연 경우 동일 하 게 동작 합니다.scanf현재 입력 스트림에서 유니코드를 지원 하지 않습니다.
이러한 함수 버전을 _l 접미사는 전달 하지 않고 현재 스레드 로캘은 로캘 매개 변수를 사용 하는 것을 제외 하 고 동일 합니다.
일반 텍스트 루틴 매핑
TCHAR입니다.H 루틴 |
_UNICODE 및 _Mbcs가 정의 되어 있지 않습니다 |
_Mbcs가 정의 |
_Unicode가 정의 |
---|---|---|---|
_tscanf |
scanf |
scanf |
wscanf |
_tscanf_l |
_scanf_l |
_scanf_l |
_wscanf_l |
자세한 내용은 형식 사양을 필드-scanf 함수와 wscanf 함수.
요구 사항
루틴 |
필수 헤더 |
---|---|
scanf, _scanf_l |
<stdio.h> |
wscanf, _wscanf_l |
<stdio.h> 또는 <wchar.h> |
콘솔에서 지원 되지 않습니다 Windows 스토어 응용 프로그램입니다.콘솔에 연결 된 표준 스트림 핸들 stdin, stdout, 및 stderr, C 런타임 함수를 사용 하기 전에 이동 해야 Windows 스토어 응용 프로그램입니다.추가 호환성 정보를 참조 하십시오. 호환성 소개에서 합니다.
예제
// crt_scanf.c
// compile with: /W3
/* This program uses the scanf and wscanf functions
* to read formatted input.
*/
#include <stdio.h>
int main( void )
{
int i, result;
float fp;
char c, s[81];
wchar_t wc, ws[81];
result = scanf( "%d %f %c %C %80s %80S", &i, &fp, &c, &wc, s, ws ); // C4996
// Note: scanf and wscanf are deprecated; consider using scanf_s and wscanf_s
printf( "The number of fields input is %d\n", result );
printf( "The contents are: %d %f %c %C %s %S\n", i, fp, c, wc, s, ws);
result = wscanf( L"%d %f %hc %lc %80S %80ls", &i, &fp, &c, &wc, s, ws ); // C4996
wprintf( L"The number of fields input is %d\n", result );
wprintf( L"The contents are: %d %f %C %c %hs %s\n", i, fp, c, wc, s, ws);
}
해당 .NET Framework 항목
참고 Parse 메서드 같은 System::Double::Parse.
참고 항목
참조
fscanf, _fscanf_l, fwscanf, _fwscanf_l
printf, _printf_l, wprintf, _wprintf_l