GVHDTH: Nguyn Ngc Tho
TP TIN VĂN BN – TP TIN NH PHÂN
1. Phân loi
Tp tin là hình thc lưu tr ph biến trên b nh ph, gm 2 loi:
Ø Tp tin văn bn: là tp tin ch lưu tr thun túy văn bn, trong đó các kí t
được biu din bng mã ASCII ca nó, người dùng có th đọc được.
Tính cht:
§ D truy xut và x
§ Độ bo mt kém
§ Tc độ truy xut kém
§ Kích thước ln.
- Vd: Lưu s nguyên 12345 dng binary (2 byte) và dng
chui (5 byte).
Các dng thường gp:
§ Tp tin cu hình: *.INI, *.CFG
§ *.TXT, *.HTML, *.XML
Ø Tp tin nh phân: tp tin cha d liu ít nht mt vài chui bit
không th biu din dng văn bn trơn, do đó tp tin này ch y đọc
được còn người dùng không đọc được.
Tính cht:
§ Truy xut và x lí phc tp hơn
§ Tc độ truy xut nhanh
§ Tính bo mt cao hơn
Các dng thường gp:
§ Các tp tin có cu trúc t định nghĩa
§ *.DOC, *XLS, *PDF, *PPT
§ *.JPG, *.PCX, *.BMP,*.TIF
§ *.MP3, *.WAV, *.AVI,
GVHDTH: Nguyn Ngc Tho
2. Mt s hàm x lí chung cho c hai dng tp tin (xem MSDN)
Tên hàm Chc năng
fopen M tp tin theo kiu văn bn hoc nh phân
fclose Đóng tp tin
fcloseall Đóng tt c các tp tin
fflush Làm sch ng đệm ca mt tp tin đang m
fflushall Làm sch ng đệm ca tt c các tp tin đang m
remove/unlink
Xóa tp tin
3. Mt s hàm xdùng cho tp tin văn bn (xem MSDN)
Tên hàm Chc năng
fopen M tp tin theo kiu văn bn hoc nh phân
fclose Đóng tp tin
fcloseall Đóng tt c các tp tin
fprintf Ghi giá tr dng text lên tp tin
fscanf Đọc giá tr dng text t tp tin
fflush Làm sch ng đệm ca mt tp tin đang m
fflushall Làm sch ng đệm ca tt c các tp tin đang m
remove/unlink
Xóa tp tin
putc/fputc Ghi lên tp tin mt kí t (s dng trong tp tin văn bn hoc nh
phân có khác bit)
getc/fgetc Đọc t tp tin mt kí t (s dng trong tp tin văn bn hoc nh
phân có khác bit)
4. Mt s hàm xdùng cho tp tin nh phân (xem MSDN)
Tên hàm Chc năng
putw Ghi mt s nguyên lên tp tin
getw Đọc mt s nguyên t tp tin
GVHDTH: Nguyn Ngc Tho
fwrite Ghi các mu tin (có cu trúc định trước) lên tp tin
fread Đọc các mu tin (có cu trúc định trước) t tp tin
fseek Di chuyn con tr ch v đến v trí mong mun
ftell Cho biết v trí hin ti ca con tr ch v
5. Các ví d v đọc/ghi tp tin văn bn và nh phân
Ghi tp tin văn bn
#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);
}
Đọc tp tin văn bn
#include <stdio.h>
void main()
{
int a;
FILE *f = fopen("number_text.txt", "rt"); // m tp tin để đọc dng text
while (!feof(f)) // kim tra đến cui tp tin chưa
{
fscanf(f,"%d",&a); // đọc d liu dng text vào biến a
printf("%3d", a);
}
fclose(f); // đóng tp tin sau khi làm xong
}
Ghi tp tin nh phân
#include <stdio.h>
typedef struct
{
char mssv[10];
char name[30];
}SV;
GVHDTH: Nguyn Ngc Tho
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);
}
Đọc tp tin nh phân
#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");
for (i = 0; i < 5; i++)
{
fread(&arr[i], sizeof(SV), 1, f);
printf("MSSV: %s\nHo ten: %s\n\n", arr[i].mssv, arr[i].name);
}
fclose(f);
}