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 항목

참고 항목

참조

부동 소수점 지원

스트림 I/O

로캘

fscanf, _fscanf_l, fwscanf, _fwscanf_l

printf, _printf_l, wprintf, _wprintf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

sscanf, _sscanf_l, swscanf, _swscanf_l