fread
출처: ko.cppreference.net
| 헤더 <stdio.h>
|
||
size_t fread( void* buffer, size_t size, size_t count,
FILE* stream );
|
(C99까지) | |
size_t fread( void* restrict buffer, size_t size, size_t count,
FILE* restrict stream );
|
(C99부터) | |
주어진 입력 스트림 count에서 배열 buffer로 최대 stream개의 객체를 읽습니다. 각 객체에 대해 fgetc size를 호출하는 것처럼 수행하며, 얻은 결과를 순서대로 buffer의 연속적인 위치에 저장합니다. unsigned char은(는)
의 배열로 해석됩니다. 스트림의 파일 위치 표시자는 읽은 문자 수만큼 전진합니다.
같이 보기
| 매개변수 | buffer | - |
| 읽은 객체를 저장할 배열을 가리키는 포인터 | size | - |
| 각 객체의 바이트 단위 크기 | count | - |
| 읽을 객체의 개수 | stream | - |
읽을 스트림
반환값count성공적으로 읽은 객체의 개수. 오류나 파일 끝 조건이 발생하면
보다 작을 수 있습니다.
sizecount또는 fread가 0이면
fread은 0을 반환하고 다른 동작을 수행하지 않습니다.
은(는) 파일 끝과 오류를 구분하지 않으므로, 호출자는 feof와 ferror
을 사용하여 어떤 상황이 발생했는지 확인해야 합니다.
예제
#include <stdio.h>
enum { SIZE = 5 };
int main(void)
{
const double a[SIZE] = {1.0, 2.0, 3.0, 4.0, 5.0};
printf("Array has size %ld bytes, element size: %ld\n", sizeof a, sizeof* a);
FILE* fp = fopen("test.bin", "wb"); // must use binary mode
fwrite(a, sizeof* a, SIZE, fp); // writes an array of doubles
fclose(fp);
double b[SIZE];
fp = fopen("test.bin","rb");
const size_t ret_code = fread(b, sizeof b[0], SIZE, fp); // reads an array of doubles
if (ret_code == SIZE)
{
printf("Array at %p read successfully, contents:\n", (void*)&a);
for (int n = 0; n != SIZE; ++n)
printf("%f ", b[n]);
putchar('\n');
}
else // error handling
{
if (feof(fp))
printf("Error reading test.bin: unexpected end of file\n");
else if (ferror(fp))
perror("Error reading test.bin");
}
fclose(fp);
}
이 코드 실행하기
Array has size 40 bytes, element size: 8
Array at 0x1337f00d6960 read successfully, contents:
1.000000 2.000000 3.000000 4.000000 5.000000
가능한 출력:
- 참조
- C23 표준 (ISO/IEC 9899:2024):
- 7.21.8.1 fread 함수 (p: TBD)
- C17 표준 (ISO/IEC 9899:2018):
- 7.21.8.1 fread 함수 (p: 243-244)
- C11 표준 (ISO/IEC 9899:2011):
- 7.21.8.1 fread 함수 (p: 335)
- C99 표준 (ISO/IEC 9899:1999):
- 7.19.8.1 fread 함수 (p: 301)
- C89/C90 표준 (ISO/IEC 9899:1990):
4.9.8.1 fread 함수
sscanf_s(C11)(C11) |
(C11)stdin, 파일 스트림 또는 버퍼에서 형식화된 입력을 읽습니다. (함수) |
| 파일 스트림에서 문자 문자열을 가져옵니다. (함수) | |
| 파일에 씁니다. (함수) | |
C++ 문서 for fread
| |