다음을 통해 공유


fscanf_s, _fscanf_s_l, fwscanf_s_fwscanf_s_l

스트림에서 서식이 지정된 데이터를 읽습니다. 이러한 버전의 < _fscanf_l_fwscanf_lfwscanf a0/>에는 CRTfscanf보안 기능에 설명된 대로 보안 기능이 향상되었습니다.

구문

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 ]...
);

매개 변수

stream
FILE 구조체에 대한 포인터입니다.

format
형식 컨트롤 문자열입니다.

argument
선택적 인수입니다.

locale
사용할 로캘입니다.

반환 값

이러한 각 함수는 성공적으로 변환하고 할당하는 필드 수를 반환합니다. 반환 값에는 읽었으나 할당되지 않은 필드가 포함되지 않습니다. 반환 값이 0이면 할당된 필드가 없음을 나타냅니다. 오류가 발생하거나 첫 번째 변환 전에 파일 스트림의 끝에 도달할 경우 반환 값은 fscanf_sfwscanf_s에 대한 EOF입니다.

이러한 함수는 해당 함수 매개 변수의 유효성을 검사합니다. 잘못된 파일 포인터이거나 format null 포인터인 경우 stream 이러한 함수는 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기를 호출합니다. 계속해서 실행하도록 허용된 경우, 이러한 함수는 EOF를 반환하고 errnoEINVAL로 설정합니다.

설명

fscanf_s 함수는 stream의 현재 위치에서 argument(있는 경우)에 의해 지정된 위치로 데이터를 읽습니다. 각 argumentformat의 형식 지정자에 해당되는 형식의 변수에 대한 포인터여야 합니다. format는 입력 필드의 해석을 제어하고 인수와 동일한 형식 및 함수 format 를 가합니다. 형식 지정 필드 및 scanf wscanf 설명에 format대한 함수를 참조하세요scanf_s. fwscanf_sfscanf_s의 와이드 문자 버전이며, fwscanf_s에 대한 format 인수는 와이드 문자열입니다. 스트림이 ANSI 모드에서 열리는 경우 이러한 함수는 동일하게 작동합니다. fscanf_s는 현재 UNICODE 스트림에서의 입력을 지원하지 않습니다.

더 안전한 함수(_s 접미사 포함)와 기타 버전의 주요 차이점은 더 안전한 함수의 경우 각 c, C, s, S[ 형식 필드의 문자 크기를 변수 바로 뒤의 인수로 전달해야 한다는 점입니다. 자세한 내용은 , _scanf_s_lscanf wscanf_s_wscanf_s_l너비 사양을 참조scanf_s하세요.

참고 항목

크기 매개 변수는 size_t가 아니라 unsigned 형식입니다.

_l 접미사가 있는 이러한 함수 버전은 현재 스레드 로캘 대신 전달된 로캘 매개 변수를 사용한다는 점만 제외하고 모두 동일합니다.

일반 텍스트 루틴 매핑

TCHAR.H 루틴 _UNICODE_MBCS 정의되지 않음 정의된 _MBCS 정의된 _UNICODE
_ftscanf_s fscanf_s fscanf_s fwscanf_s
_ftscanf_s_l _fscanf_s_l _fscanf_s_l _fwscanf_s_l

요구 사항

함수 필수 헤더
fscanf_s, _fscanf_s_l <stdio.h>
fwscanf_s, _fwscanf_s_l <stdio.h> 또는 <wchar.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

예시

// 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

참고 항목

스트림 I/O
_cscanf_s, _cscanf_s_l, _cwscanf_s_cwscanf_s_l
fprintf_s, _fprintf_s_l, fwprintf_s_fwprintf_s_l
scanf_s, _scanf_s_l, wscanf_s_wscanf_s_l
sscanf_s, _sscanf_s_l, swscanf_s_swscanf_s_l
fscanf, _fscanf_l, fwscanf_fwscanf_l