1. Trang chủ
  2. » Sinh học lớp 12

Slide Tin học cơ sở 4 - Lec07 - Files [Compatibility Mode] - Vũ Thị Hồng Nhạn - Tài liệu VNU

17 28 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 158,9 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

 Khi ghi “ biến có cấu trúc ” lên file  ghi một khối có kích thước cố định  Và đọc từ file ra biến cấu trúc , cũng đọc từ file theo khối có kích thước. cố định.[r]

Trang 1

Tin

Tin Học Học Cơ Cơ Sở Sở 4: 4:

Tập

Tin

Tin Học Học Cơ Cơ Sở Sở 4: 4:

Tập

Vũ Thị Hồng Nhạn

(vthnhan@vnu.edu.vn) Human Machine Interaction Lab Vietnam National Univ., Hanoi

Trang 2

Nội dung

 Sử dụng tập tin (file)

 Mở, đóng file

 Ghi, đọc file với số nguyên, mảng, chuỗi

 Ghi, đọc file với số nguyên, mảng, chuỗi

 Kết luận

Trang 3

Dòng (streams)

 Trong nhiều ngôn ngữ lập trình, vào/ra (input/output) được thực

hiện trên dòng dữ liệu

 Dữ liệu tồn tại trên dòng, ta có thể truy cập và sử dụng theo nhu cầu

 Ví dụ

 stdout: dòng xuất ra chuẩn

 stderr: dòng ra xuất ra lỗi chuẩn

 stdin: dòng nhập vào chuẩn

 files

 network sockets (kết nối mạng: network connections)

Trang 4

 Dữ liệu thường được lưu trong các file và đây cũng là nguồn dữ liệu cho chương trình

Dữ liệu nhập vào

• Trực tiếp từ bàn phím

Xuất dữ liệu

• Màn hình

Chương trình

• Trực tiếp từ bàn phím

• File trên đĩa

• Kho dữ liệu trên mạng

• Màn hình

• File lưu trên đĩa

• Máy in

Chương trình (program)

Trang 5

Cơ bản về file

 Dữ liệu biểu diễn theo cách của user (vd Số 12) được lưu trong các file

 Dưới dạng nhị phân (1100)

 Trường hợp lưu trữ chuẩn không có mã hóa

ASCII Symbol 64

65 66 67 68

@ A B C D

 Ký tự: mã ASCII

 Chuỗi ký tự: chuỗi mã ASCII của từng ký tự

 Số: chuỗi mà ASCII của ký tự số hoặc biểu diễn nhị phân của số

 Đặ c điểm truy xuất data trong tập tin

 Tuần tự từng byte

68 69 70

….

D E F

….

Trang 6

Cơ bản về file (tiếp)

 Hệ điều hành xác định 1 file bằng “đường dẫn”

 Đó là một chuỗi các ký tự

 Đườ ng dẫn tuyệt đối ( absolute path ), ví dụ,

 C:\\folder1\folder2\dulieu.txt

 Nếu file nằm trong thư mục hiện hành

 Chỉ cần khai báo “tên file” là đủ: “dulieu.txt”

 Gọi là “đường dẫn tương đối” (relative path)

Trang 7

Phân loại files

 Tập tin văn bản (text file)

 Dữ liệu lưu trữ là mã ASCII của ký tự , ký số

 Tập tin nhị phân (binary file)

 Dữ liệu lưu trữ là dạng nhị phân của ký tự

Trang 8

Phân loại files (tiếp)

 Hai loại lưu trữ khác nhau nên việc truy xuất dữ liêu….

 từ file ra biến cần đến các hàm thư viện khác nhau

 Binary file

 Dùng để lưu trữ dữ liệu dưới dạng cấu trúc có kích thước cố định

 Khi ghi “biến có cấu trúc” lên file  ghi một khối có kích thước cố định

 Và đọc từ file ra biến cấu trúc, cũng đọc từ file theo khối có kích thước

cố định

Trang 9

Vào/ra file

 Trước khi có thể Đọc & Ghi được

 Phải mở file, dùng hàm thư viện fopen

 fopen nhận một tên ngoài như “data.txt”, thực hiện các thủ tục với hệ điều hành và trả lại một “con trỏ”

 Ta dùng con trỏ này để đọc và ghi vào file

 Con trỏ “trỏ tới” một structure FILE

FILE *fp

Trang 10

 FILE *fopen(char *name, char *mode);

 fopen trả lại con trỏ trỏ tới FILE

 FILE là tên kiểu

 mode có thể là

 r: đọc (read)

 w: ghi (write)

 a: thêm vào (append)

 Có thể thêm “b” vào chuỗi mode, cho phép làm việc với file nhị phân

Trang 11

Đóng file: fclose

 int fclose(FILE *fp);

 0: được trả lại nếu thành công

 EOF (hằng -1) nếu thất bại

 Ví dụ Kiểm tra xem file có tồn tại không

int FileExist (char *fname){

FILE* fp = fopen(fname, “r”);

int kq;

kq = (fp==NULL)? 0 : 1;

if (fp)

fclose(fp);

Trang 12

Ví dụ 1

Ghi và đọc số nguyên từ 1…n

int main(){

FILE *fp;

int i,n;

printf(“Nhập vào số n:");

scanf("%d", &n);

//Ghi file

fp = fopen("data.txt","wb");

if(fp= =NULL){

printf(“Không thể mở tên file.\n");

exit(0);

}else

for(i=1;i<=n;i++)

fwrite(&i, sizeof(int), 1, fp); //Ghi file

fwrite(&i, sizeof(int), 1, fp); //Ghi file

fclose(fp);

//Đọc file

fp=fopen("data.txt", "rb");

while(fread(&i, sizeof(int),1, fp)==1) //Đọc file printf("%d ",i);

Trang 13

fwrite, fread

 fwrite(&i, sizeof(int), 1, fp)

 Ghi thông tin i vào tập tin

 Hàm có 4 đối số

 Địa chỉ để ghi cấu trúc (&i)

 Kích thước của cấu trúc (sizeof(int))

 fread(&i, sizeof(int), 1, fp) =1 hoặc 0

 Đọc thông tin từ tập tin lưu vào i

 Đọc thành công hàm trả về 1, và 0 nếu kết thúc file

 Kích thước của cấu trúc (sizeof(int))

 Số cấu trúc sẽ ghi (1)

 Con trỏ trỏ tới tập tin (fp)

size_t fread(void *array, size_t size, size_t count, FILE *fp);

size_t fwrite(void *array, size_t size, size_t count, FILE *fp);

Trang 14

Ví dụ 2: ghi 1 danh sách nhân viên ra file

#define MAX 30

int main(){

typedef struct{

int manv;

char hoten[28];

printf(“Nhập vào số nhân viên: ");

scanf(“%d”,&n);

//Mở file để ghi nhân viên vào file char hoten[28];

}nhanvien;

FILE *fp;

nhanvien nv[MAX];

char temp[10];

//Mở file để ghi nhân viên vào file

fp=fopen("struct.dat","wb");

if(fp==NULL){

printf(“không mở được file!\n");

exit(0);

Trang 15

Ví dụ 2 (tiếp)

//Ghi nhân viên vào file

for(i=0; i<n;i++){

fflush(stdin);

printf(“Nhập mã nhân viên thứ%d:", i+1);

scanf(“%d”, nv[i].manv );

fflush(stdin);

printf(“Nhập tên nhân viên:");

gets(nv[i].hoten);

fwrite(&nv[i],sizeof(nhanvien),1,fp);

Trang 16

Ví dụ dụ 2 ( 2 (tiếp tiếp) ) Ví

Ví dụ dụ 2 ( 2 (tiếp tiếp) )

//Đọc từ file và in nhân viên ra màn hình

fp = fopen("struct.dat","rb");

while( fread(&nv[i], sizeof(nhanvien),1,fp) = =1)

printf("%5d %s\n“,nv[i].manv, nv[i].hoten);

printf("%5d %s\n“,nv[i].manv, nv[i].hoten);

}

fclose(fp);

}

Trang 17

Kết luận

 Ý nghĩa của việc sử dụng tập tin (file)

 Mở, đóng file

 Ghi, đọc file số nguyên, mảng, chuỗi

Ngày đăng: 26/01/2021, 21:37

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w