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ả:
Leave a Reply
You must be logged in to post a comment.