fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_lfscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l

스트림에서 형식이 지정된 데이터를 읽습니다.Reads formatted data from a stream. 이러한 버전의 fscanf, _fscanf_l, fwscanf, _fwscanf_l에는 CRT의 보안 기능에 설명된 대로 향상된 보안 기능이 포함되어 있습니다.These versions of fscanf, _fscanf_l, fwscanf, _fwscanf_l have security enhancements, as described in Security Features in the CRT.

구문Syntax

int fscanf_s(
   FILE *stream,
   const char *format [,
   argument ]...
);
int _fscanf_s_l(
   FILE *stream,
   const char *format,
   locale_t locale [,
   argument ]...
);
int fwscanf_s(
   FILE *stream,
   const wchar_t *format [,
   argument ]...
);
int _fwscanf_s_l(
   FILE *stream,
   const wchar_t *format,
   locale_t locale [,
   argument ]...
);

매개 변수Parameters

스트림stream
FILE 구조체에 대한 포인터입니다.Pointer to FILE structure.

formatformat
형식 컨트롤 문자열입니다.Format-control string.

argumentargument
선택적 인수입니다.Optional arguments.

localelocale
사용할 로캘입니다.The locale to use.

Return ValueReturn Value

이러한 각 함수는 모두 성공적으로 변환되고 할당된 필드 수를 반환합니다. 이때 읽혀졌지만 할당되지 않은 필드는 반환 값에 포함되지 않습니다.Each of these functions returns the number of fields that are successfully converted and assigned; the return value does not include fields that were read but not assigned. 반환 값이 0이면 할당된 필드가 없음을 나타냅니다.A return value of 0 indicates that no fields were assigned. 오류가 발생 하거나 첫 번째 변환 전에 파일 스트림의 끝에 도달 하는 경우 반환 값은 fscanf_sfwscanf_s에 대 한 EOF 입니다.If an error occurs, or if the end of the file stream is reached before the first conversion, the return value is EOF for fscanf_s and fwscanf_s.

이러한 함수는 해당 함수 매개 변수의 유효성을 검사합니다.These functions validate their parameters. Stream 이 잘못 된 파일 포인터 이거나 형식이 null 포인터인 경우 이러한 함수는 매개 변수 유효성 검사에 설명 된 대로 잘못 된 매개 변수 처리기를 호출 합니다.If stream is an invalid file pointer, or format is a null pointer, these functions invoke the invalid parameter handler, as described in Parameter Validation. 계속 해 서 실행 하도록 허용한 경우 이러한 함수는 EOF 를 반환 하 고 errnoEINVAL로 설정 합니다.If execution is allowed to continue, these functions return EOF and set errno to EINVAL.

설명Remarks

Fscanf_s 함수는 스트림의 현재 위치에서 인수 (있는 경우)로 지정 된 위치로 데이터를 읽습니다.The fscanf_s function reads data from the current position of stream into the locations that are given by argument (if any). 인수형식의 형식지정자에 해당 하는 형식의 변수에 대 한 포인터 여야 합니다.Each argument must be a pointer to a variable of a type that corresponds to a type specifier in format. format 은 입력 필드의 해석을 제어 하 고 scanf_s에 대 한 format 인수와 동일한 양식 및 기능을 포함 합니다. 형식에 대 한 설명은 형식 사양 필드: Scanf 및 wscanf 함수 를 참조 하세요.format controls the interpretation of the input fields and has the same form and function as the format argument for scanf_s; see Format Specification Fields: scanf and wscanf Functions for a description of format. fwscanf_sfscanf_s의 와이드 문자 버전입니다. fwscanf_s 에 대 한 format 인수는 와이드 문자 문자열입니다.fwscanf_s is a wide-character version of fscanf_s; the format argument to fwscanf_s is a wide-character string. 스트림이 ANSI 모드에서 열리는 경우 이러한 함수는 동일하게 작동합니다.These functions behave identically if the stream is opened in ANSI mode. fscanf_s 는 현재 유니코드 스트림의 입력을 지원 하지 않습니다.fscanf_s doesn't currently support input from a UNICODE stream.

보다 안전한 함수 ( _s 접미사 포함)와 다른 버전 간의 주요 차이점은 보다 안전한 함수에는 각 c, c, s, s[ type] 필드의 크기가 변수 바로 다음에 오는 인수로 전달 되어야 한다는 것입니다.The main difference between the more secure functions (that have the _s suffix) and the other versions is that the more secure functions require the size in characters of each c, C, s, S, and [ type field to be passed as an argument immediately following the variable. 자세한 내용은 scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_lscanf 너비 사양을 참조하세요.For more information, see scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l and scanf Width Specification.

참고

Size 매개 변수는 size_t이 unsigned 아니라 형식 size_t입니다.The size parameter is of type unsigned, not size_t.

_L 접미사가 있는 이러한 함수 버전은 현재 스레드 로캘 대신 전달 된 로캘 매개 변수를 사용 한다는 점을 제외 하 고는 동일 합니다.The versions of these functions that have the _l suffix are identical except that they use the locale parameter that's passed in instead of the current thread locale.

제네릭 텍스트 라우팅 매핑Generic-Text Routine Mappings

TCHAR.H 루틴TCHAR.H routine _UNICODE 및 _MBCS 정의되지 않음_UNICODE & _MBCS not defined _MBCS 정의됨_MBCS defined _UNICODE 정의됨_UNICODE defined
_ftscanf_s_ftscanf_s fscanf_sfscanf_s fscanf_sfscanf_s fwscanf_sfwscanf_s
_ftscanf_s_l_ftscanf_s_l _fscanf_s_l_fscanf_s_l _fscanf_s_l_fscanf_s_l _fwscanf_s_l_fwscanf_s_l

요구 사항Requirements

함수Function 필수 헤더Required header
fscanf_s, _fscanf_s_lfscanf_s, _fscanf_s_l <stdio.h>
fwscanf_s, _fwscanf_s_lfwscanf_s, _fwscanf_s_l <stdio.h> 또는 <wchar.h><stdio.h> or <wchar.h>

호환성에 대한 자세한 내용은 Compatibility을 참조하세요.For additional compatibility information, see Compatibility.

예제Example

// crt_fscanf_s.c
// This program writes formatted
// data to a file. It then uses fscanf to
// read the various data back from the file.

#include <stdio.h>
#include <stdlib.h>

FILE *stream;

int main( void )
{
   long l;
   float fp;
   char s[81];
   char c;

   errno_t err = fopen_s( &stream, "fscanf.out", "w+" );
   if( err )
      printf_s( "The file fscanf.out was not opened\n" );
   else
   {
      fprintf_s( stream, "%s %ld %f%c", "a-string",
               65000, 3.14159, 'x' );
      // Set pointer to beginning of file:
      fseek( stream, 0L, SEEK_SET );

      // Read data back from file:
      fscanf_s( stream, "%s", s, _countof(s) );
      fscanf_s( stream, "%ld", &l );

      fscanf_s( stream, "%f", &fp );
      fscanf_s( stream, "%c", &c, 1 );

      // Output data read:
      printf( "%s\n", s );
      printf( "%ld\n", l );
      printf( "%f\n", fp );
      printf( "%c\n", c );

      fclose( stream );
   }
}
a-string
65000
3.141590
x

참고 항목See also

스트림 I/OStream I/O
_cscanf_s, _cscanf_s_l, _cwscanf_s, _cwscanf_s_l_cscanf_s, _cscanf_s_l, _cwscanf_s, _cwscanf_s_l
fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_lfprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l
scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_lscanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l
sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_lsscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l
fscanf, _fscanf_l, fwscanf, _fwscanf_lfscanf, _fscanf_l, fwscanf, _fwscanf_l