Professional Documents
Culture Documents
Read and Write File
Read and Write File
Tập tin là hình thức lưu trữ phổ biến trên bộ nhớ phụ, gồm 2 loại:
Tập tin văn bản: là tập tin chỉ lưu trữ thuần túy văn bản, trong đó các kí tự được biểu diễn
bằng mã ASCII của nó, người dùng có thể đọc được.
o Tính chất:
Dễ truy xuất và xử lí
Độ bảo mật kém
Tốc độ truy xuất kém
Kích thước lớn.
Vd: Lưu số nguyên 12345 ở dạng binary (2byte) và dạng chuỗi (5byte)
o Các dạng thường gặp:
Tập tin cấu hình: *.INI, *.CFG
*.TXT, *.HTML, *.XML
Tập tin nhị phân: là tập tin chứa dữ liệu mà có ít nhất một vài chuỗi bit không thể
biểu diễn ở dạng ăn bản trơn, do đó tập tin này chỉ có máy đọc được còn người dùng
không đọc được.
o Tính chất:
Truy xuất và xử lí phức tạp hơn
Tốc độ truy xuất nhanh
Tính bảo mật cao hơn
o Các dạng thường gặp:
Các tập tin có cấu trúc tự định nghĩa
*.DOC, *XLS, *PDF, *PPT
*.JPG, *.PCX, *.BMP,*.TIF
*.MP3, *.WAV, *.AVI,…
2. Mt s hàm x lí chung cho c hai dng tp tin (xem thêm MSDN)
);
fcloseall int _fcloseall( void ); Đóng tất cả các tập
tin
fflush int fflush( Làm sạch vùng đệm
FILE *stream //Con trỏ tới cấu trúc FILE. của một tập tin đang
); mở
fflushall int flushall( void ); Làm sạch vùng đệm
của tất cả các tập tin
đang mở
remove/unlink int remove ( Xóa tập tin
const char *filename //Tên file
);
int _unlink(
const char *filename //Tên file
);
3. Mt s hàm x lí dùng cho tp tin văn bn (xem thêm MSDN)
Chuỗi Ý nghĩa
"r" Mở 1 file để đọc. File đó phải đã tồn tại.
"w" Tạo 1 file rỗng để ghi. Nếu 1 file có cùng tên với file đã tồn tại thì nội dung của nó sẽ bị ghi đè.
"a" Thêm (Append) vào file. Các toán tử thêm dữ liệu vào cuối file.
"r+" Mở 1 file để cập nhật (đọc và ghi). File đó phải đã tồn tại.
"w+" Tạo một file rỗng để đọc và ghi. Nếu 1 file có cùng tên với file đã tồn tại thì nội dung của nó sẽ
bị ghi đè.
"a+" Mở 1 file để đọc và thêm. Tất cả các toán tử ghi được thực hiện ở cuối file để không ghi đè lên
phần phía trước. Bạn có thể đặt lại vị trí con trỏ (fseek, rewind) tới bất kì vị trí nào để đọc, nhưng
với toán tử ghi thì con trỏ sẽ được lùi về phía cuối file. File sẽ được tạo mới nếu chưa tồn tại.
Chuỗi Ý nghĩa
thêm
"b" Các mode này mở file theo dạng text file. Để mở theo dạng binary file, ta thêm kí tự "b" vào
chuỗi mode.
"t" Mở theo text mode. Ctrl + Z được xem như là một kí tự kết thúc file khi nhập.
Trong các file được mở cho đọc/ghi với "a+", fopen kiểm tra tổ hợp phím CTRL + Z có ở
cuối tập tin không và loại bỏ nó, nếu có thể.
Cách ghi:
4. Mt s hàm x lí dùng cho tp tin nh phân (xem thêm MSDN)
#include <stdio.h>
void main()
{
int a[10] = {10,9,8,7,6,5,4,3,2,1};
FILE *f = fopen("number_text.txt", "wt");
for (int i = 0; i < 10; i++)
{
printf("%3d", a[i]);
fprintf(f,"%d\n",a[i]);
}
fclose(f);
}
#include <stdio.h>
void main()
{
int a;
FILE *f = fopen("number_text.txt", "rt"); // mở tập tin để đọc dạng text
while (!feof(f)) // kiểm tra đến cuối tập tin chưa
{
fscanf(f,"%d",&a); // đọc dữ liệu dạng text vào biến a
printf("%3d", a);
}
fclose(f); // đóng tập tin sau khi làm xong
}
#include <stdio.h>
typedef struct
{
char mssv[10];
char name[30];
}SV;
void main()
{
int i;
SV arr[5];
FILE *f = fopen("number_binary.bin", "wb");
for (i = 0; i < 5; i++){
printf("Nhap MSSV: ");
gets(arr[i].mssv);
printf("Nhap ten: ");
gets(arr[i].name);
}
for (i = 0; i < 5; i++)
fwrite(&arr[i], sizeof(SV), 1, f);
fclose(f);
}
#include <stdio.h>
typedef struct
{
char mssv[10];
char name[30];
}SV;
void main()
{
int i;
SV arr[5];
FILE *f = fopen("number_binary.bin", "rb");