스트림에서 데이터를 읽습니다.Reads data from a stream.


size_t fread(
   void *buffer,
   size_t size,
   size_t count,
   FILE *stream

매개 변수Parameters

데이터의 저장소 위치입니다.Storage location for data.

항목 크기(바이트)입니다.Item size in bytes.

읽힐 항목의 최대 수입니다.Maximum number of items to be read.

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

반환 값Return Value

fread 일 수 있는 반환 실제로 읽어 온 전체 항목 수, 미만 개수 오류가 발생 한 경우 또는 파일의 끝에 도달 하기 전에 발견 되 면 개수합니다.fread returns the number of full items actually read, which may be less than count if an error occurs or if the end of the file is encountered before reaching count. 사용 하 여는 feof 또는 ferror 읽기 오류가 파일 끝 조건을 구분 하기 위해 함수입니다.Use the feof or ferror function to distinguish a read error from an end-of-file condition. 경우 크기 또는 count 은 0으로, fread 0에서 버퍼의 내용이 변경 되지 않은 반환 합니다.If size or count is 0, fread returns 0 and the buffer contents are unchanged. 경우 스트림 또는 버퍼 null 포인터가 fread 에 설명 된 대로 잘못 된 매개 변수 처리기를 호출 매개 변수 유효성 검사합니다.If stream or buffer is a null pointer, fread invokes the invalid parameter handler, as described in Parameter Validation. 이 함수를 설정 하는 경우 실행을 계속 허용 된, errnoEINVAL 0을 반환 합니다.If execution is allowed to continue, this function sets errno to EINVAL and returns 0.

이러한 오류 코드 및 기타 오류 코드에 대한 자세한 내용은 _doserrno, errno, _sys_errlist 및 _sys_nerr를 참조하세요.See _doserrno, errno, _sys_errlist, and _sys_nerr for more information on these, and other, error codes.


fread 까지 함수 읽습니다 count 항목의 크기 입력에서 바이트 스트림 에 저장 버퍼 .The fread function reads up to count items of size bytes from the input stream and stores them in buffer. 와 연결 된 파일 포인터 스트림 (있는 경우) 만큼 증가 실제로 읽는 바이트 수입니다.The file pointer associated with stream (if there is one) is increased by the number of bytes actually read. 지정 된 스트림으로 텍스트 모드로 열리면, 캐리지 리턴-줄 바꿈 쌍 단일 줄 바꿈 문자로 대체 됩니다.If the given stream is opened in text mode, carriage return-linefeed pairs are replaced with single linefeed characters. 이렇게 바뀌더라도 파일 포인터 또는 반환 값에는 영향을 미치지 않습니다.The replacement has no effect on the file pointer or the return value. 오류가 발생할 경우 파일 포인터 위치는 비활성화 상태입니다.The file-pointer position is indeterminate if an error occurs. 부분적으로 읽은 항목의 값은 확인할 수 없습니다.The value of a partially read item cannot be determined.

이 함수는 다른 스레드를 잠급니다.This function locks out other threads. 잠기지 않는 버전 필요 _fread_nolock합니다.If you need a non-locking version, use _fread_nolock.

요구 사항Requirements

함수Function 필수 헤더Required header
freadfread <stdio.h><stdio.h>

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


// crt_fread.c
// This program opens a file named FREAD.OUT and
// writes 25 characters to the file. It then tries to open
// FREAD.OUT and read in 25 characters. If the attempt succeeds,
// the program displays the number of actual items read.

#include <stdio.h>

int main( void )
   FILE *stream;
   char list[30];
   int  i, numread, numwritten;

   // Open file in text mode:
   if( fopen_s( &stream, "fread.out", "w+t" ) == 0 )
      for ( i = 0; i < 25; i++ )
         list[i] = (char)('z' - i);
      // Write 25 characters to stream
      numwritten = fwrite( list, sizeof( char ), 25, stream );
      printf( "Wrote %d items\n", numwritten );
      fclose( stream );

      printf( "Problem opening the file\n" );

   if( fopen_s( &stream, "fread.out", "r+t" ) == 0 )
      // Attempt to read in 25 characters
      numread = fread( list, sizeof( char ), 25, stream );
      printf( "Number of items read = %d\n", numread );
      printf( "Contents of buffer = %.25s\n", list );
      fclose( stream );
      printf( "File could not be opened\n" );
Wrote 25 items
Number of items read = 25
Contents of buffer = zyxwvutsrqponmlkjihgfedcb

참고자료See also

스트림 I/OStream I/O