Open File
Chúng ta sử dụng hàm fopen
để mở file hoặc tạo file mới. Hàm này có dạng như sau:
|
|
Trong đó filename là đường dẫn tương đối hoặc tuyệt đối đến file. Còn mode được mô tả như sau:
Mode | Mô tả |
---|---|
r | Mở file để đọc. Nếu không tìm thấy file, hàm này sẽ về con trỏ NULL. |
w | Mở file để ghi. Nếu file không tồn tại, hàm này sẽ tạo file mới. Hàm này sẽ luôn ghi từ đầu file. |
a | Mở file để ghi vào cuối file. Nếu không tồn tại, hàm này sẽ tạo file mới. |
r+ | Mở file để đọc và ghi |
w+ | Mở file để đọc và ghi. Nếu file không tồn tại, mode này sẽ tạo file mới. Mode này sẽ xóa hết nội dung cũ trước khi ghi. |
a+ | Mở file để đọc và ghi. Nếu file không tồn tại, mode này sẽ tạo file mới. Việc đọc sẽ từ đầu file, tuy nhiên ghi thì ở cuối file. |
Nếu cần đọc ghi nhị phân với file thì có các mode tương ứng
“rb”, “wb”, “ab”, “rb+”, “r+b”, “wb+”, “w+b”, “ab+”, “a+b”
Hàm fopen
sẽ trả về NULL nếu không thể mở file, nếu thành công sẽ trả về con trỏ file.
Đóng file
Để đóng file, chúng sử dụng hàm fclose. Hàm này sẽ đẩy các dữ liệu từ buffer vào file (nếu ghi file), đóng file và giải phóng các bộ nhớ lúc mở file. Hàm sẽ trả về 0 nếu thành công hoặc EOF
nếu có lỗi. Hàm này có dạng như sau.
|
|
Ghi nội dung vào file
Có ba hàm thường dùng để ghi nội dung vào file gồm fputc
, fputs
và fprintf
. Mô tả từng hàm như sau.
Hàm | Prototype | Mô tả |
---|---|---|
fputc | int fputc(int c, FILE *fp); | Ghi một ký tự vào file |
fputs | int fputs(const char *s, FILE *fp); | Ghi một string vào file |
fprintf | int fprintf(FILE *fp, const char * format, params…) | Ghi một string được định dạng vào file |
Ví dụ sử dụng các hàm này như sau
|
|
Có thể sử dụng hàm ferror
để kiểm tra lỗi khi ghi vào file.
Chương trình sau sẽ ghi vào một file mà file này được mở chỉ để đọc.
|
|
Đọc nội dung từ file
Tương ứng với các hàm ghi nội dung file, một số hàm sẽ đọc nội dung từ file bao gồm fgetc
, fgets
, fscanf
. Mô tả từng hàm như sau.
Mô tả các hàm như sau:
Hàm | Prototype | Mô tả |
---|---|---|
fgetc | int fgetc(FILE * fp ); | đọc một ký tự |
fgets | char *fgets(char *buffer, int n, FILE *fp ); | đọc một string |
fscanf | int fscanf(FILE *fp, const char *format, …) | đọc một string đã format |
Hàm fgets
đọc tới n - 1
ký tự từ file vào buffer
, ký tự tiếp theo là kết thúc string \0
. Ví dụ về đọc file như sau:
|
|