Hàm fread đọc dữ liệu từ file binary

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

Parameter:

buffer: con trỏ trỏ tới data cần ghi xuống file.

size: kích thước data ghi xuống file (tính theo byte)

count: số lượng data được ghi xuống file.

stream: con trỏ file

Remark:

Hàm fread( ) đọc dữ liệu từ file. Hàm fread( ) khác với hàm fscanf( ) ở chỗ có thể đọc cả struct, object,…(đọc cả khối dữ liệu chỉ cần biết kích thước và cấu trúc).

  • Hàm fread( ) trả về số lượng data được đọc (không phải là số byte) nếu thành công.
  • Nếu xảy ra lỗi hoặc gặp cuối file, hàm fread( ) sẽ trả về số nguyên nhỏ hơn số lượng data được ghi.

Chú ý: Khi ghi xuống file bằng hàm fwrite( ) thì khi đọc, chúng ta sử dụng hàm fread( ).

Ví dụ: Ghi xuống file struct dd/mm/yyyy bằng hàm fwrite( ). Sau đó dùng hàm fread( ) để đọc dữ liệu từ file và hiển thị lên màn hình console

#include "stdio.h"
#include "conio.h"

struct Date
{
 int d;
 int m;
 int y;
};

Date m_date = {16, 9, 1989};

void main()
{
    FILE *fp = NULL;
    int n_byte;
    Date date;

    //openning file to writting
    fp = fopen("D:\\data.dat","w");
    if(fp == NULL)
        printf("\nError in openning file");
    else
    {
        //ghi struct date xuong file data.dat
        if(fwrite(&m_date, sizeof(Date), 1, fp) != 1)
        printf("Error in writting");
        fclose(fp);
    }

    //openning file to read
    fp = fopen("D:\\data.dat","r");

    if(fp == NULL)
        printf("\nError in openning file");
    else
    {
        if(fread(&date, sizeof(Date), 1, fp) != 1)
        printf("\nError in reading ");
        else
        {
            printf("\ndd/mm/yyyy = %.2d/%.2d/%.4d", date.d, date.m, date.y);
        }
        fclose(fp);
    }
    getch();
}

Kết quả:

Hàm fread đọc dữ liệu từ file binary

 

Be the first to comment

Leave a Reply