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ính chất:
- Vd: Lưu số nguyên 12345 ở dạng binary (2 byte) và dạng chuỗi (5 byte).
Các dạng thường gặp:
Tên hàm
Chức năng
fopen
Mở tập tin theo kiểu văn bản hoặc nhị phân
fclose
Đóng tập tin
fcloseall
Đóng tất cả các tập tin
fflush
Làm sạch vùng đệm của một tập tin đang mở
fflushall
Làm sạch vùng đệm của tất cả các tập tin đang mở
remove/unlink
Xóa tập tin
fprintf
Ghi giá trị dạng text lên tập tin
fscanf
Đọc giá trị dạng text từ tập tin
putc/fputc
Ghi lên tập tin một kí tự (sử dụng trong tập tin văn bản hoặc nhị phân có khác biệt)
getc/fgetc
Đọc từ tập tin một kí tự (sử dụng trong tập tin văn bản hoặc nhị phân có khác biệt)
putw
Ghi một số nguyên lên tập tin
getw
Đọc một số nguyên từ tập tin
fwrite
Ghi các mẫu tin (có cấu trúc định trước) lên tập tin
fread
Đọc các mẫu tin (có cấu trúc định trước) từ tập tin
fseek
Di chuyển con trỏ chỉ vị đến vị trí mong muốn
ftell
Cho biết vị trí hiện tại của con trỏ chỉ vị
5.Các ví dụ về đọc/ghi tập tin văn bản và nhị phân
#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);
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
typedef struct
char mssv[10];
char name[30];
}SV;
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);
fwrite(&arr[i], sizeof(SV), 1, f);
FILE *f = fopen("number_binary.bin", "rb");
fread(&arr[i], sizeof(SV), 1, f);
printf("MSSV: %s\nHo ten: %s\n\n", arr[i].mssv, arr[i].name);