Mối quan hệ giữa stream, buffer và FILE pointer trong C

Mọi người có sơ đồ hoạt động của stream, buffer và con trỏ FILE trong C ko ạ, trong sách thì ng ta bảo là chỉ cần bít cái con trỏ FILE để đọc/ghi file mà thôi. Nhưng mk cx ko hiểu là nó hoạt động như thế nào. Mn giúp mk vs ạ???

C hình như không có stream. :slight_smile:

FILE là struct mà trong đó có chứa thành phần là pointer đến file trên disk.
Ngoài ra thì còn có các thành phần khác cho các hàm liên quan đến file như _r cho fgetc(), _w cho fputc(), …

Và trong struct FILE cũng chứa một pointer trỏ đến buffer rành cho file đó (thực chất chỉ là char*).

Khi các hàm thao tác với file thì nó sẽ thao tác với buffer này trước.

Vd như muốn ghi một chuỗi vào file thì nó sẽ ghi vào buffer, lúc này nội dùng file chưa có thay đổi, cho đến khi bạn close file hoặc dùng hàm fflush() để đẩy nội dung trong buffer xuống disk thì lúc này nội dung của file mới có sự thay đổi. :slight_smile:

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?