Bài giảng Tin học đại cương Bài 8: Tệp dữ liệu trình bày khái niệm và phân loại tệp; các thao tác với tệp; một số bài tập vận dụng. Mời các bạn cùng tham khảo bài giảng để nắm chi tiết nội dung kiến thức.
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNGSCHOOL OF INFORMATION & COMMUNICATION TECHNOLOGY TIN HỌC ĐẠI CƯƠNG PHẦN 2: LẬP TRÌNH BẰNG NGƠN NGỮ C BÀI 8: TỆP DỮ LIỆU TỆP DỮ LIỆU 8.1 Khái niệm phân loại tệp 8.2 Các thao tác với tệp 8.2.1 Khai báo 8.2.2 Mở tệp 8.2.3 Truy nhập tệp văn 8.2.4 Truy nhập tệp nhị phân 8.2.5 Đóng tệp 8.3 Bài tập TỆP DỮ LIỆU 8.1 Khái niệm phân loại tệp 8.2 Các thao tác với tệp 8.2.1 Khai báo 8.2.2 Mở tệp 8.2.3 Truy nhập tệp văn 8.2.4 Truy nhập tệp nhị phân 8.2.5 Đóng tệp 8.3 Bài tập 8.1.1 Khái niệm Khái niệm tệp Tệp liệu (File) tập hợp liệu có liên quan với có kiểu liệu Tệp lưu trữ thiết bị nhớ (đĩa mềm, đĩa cứng, CD-ROM…) với tên để phân biệt với Mơ hình lưu trữ liệu Bit – liệu nhỏ (0 1) Byte – bits - Dùng để lưu trữ ký tự, số nguyên byte Trường (Field) – tập byte liệu Bản ghi (Record) – tập trường Tệp (file) - tập ghi Cơ sở liệu (database) - tập tệp Mơ hình lưu trữ liệu 8.1.2 Phân loại tệp Dựa theo chất liệu tệp, người ta chia tệp thành loại: Tệp văn Tệp nhị phân 8.1.2 Phân loại tệp (tiếp) Tệp văn (text file): Các phần tử kí tự gồm: Chữ Chữ số Các dấu câu Các dấu cách Một số kí tự điều khiển CR – Carriage Return – có mã ASCII 13, để đầu dòng LF – Line Feed – có mã ASCII 10, để xuống dòng … 8.1.2 Phân loại tệp (tiếp) Tệp nhị phân (binary file): Các phần tử số nhị phân mã hóa thơng tin Thơng tin mã hóa bit nhị phân số nguyên, số thực, cấu trúc liệu… Nếu thơng tin mã hóa kí tự tệp nhị phân trở thành tệp văn Vì tệp văn trường hợp riêng tệp nhị phân 8.1.3 Vai trò tệp Khi chương trình kết thúc tắt máy thơng tin nhớ (RAM) khơng Muốn lưu trữ liệu lâu dài để sử dụng cho lần sau ta phải lưu liệu lên tệp, tức để liệu nằm nhớ Tệp phương tiện dùng để cất giữ liệu lâu dài 10 8.2.4 Truy nhập tệp nhị phân Đọc liệu Ghi liệu Dịch chuyển tệp tệp trỏ tệp 46 a Đọc liệu tệp nhị phân Cú pháp: int fread(void *đia_chi_bien, int so_byte, int so_muc, FILE *con_tro_tep); Hàm fread() đọc từ tệp khối liệu kích thước = so_muc*so_byte bytes, sau ghi khối liệu lên vùng nhớ có địa dia_chi_bien Kết trả về: Nếu thành công Trả giá trị nguyên số mục (không phải số bytes) đọc từ tệp Ngược lại Trả giá trị 47 b Ghi liệu tệp nhị phân Cú pháp: int fwrite(void *dia_chi_bien, int so_byte, int so_muc, FILE* ); Hàm fwrite() đọc từ nhớ khối liệu có địa bắt đầu dia_chi_bien có kích thước so_byte*so_muc bytes, sau ghi khối liệu lên tệp Kết trả về: Nếu thành công Trả giá trị nguyên số mục (không phải số bytes) ghi lên tệp Ngược lại Trả giá trị 48 c Dịch chuyển trỏ tệp nhị phân Tương tự tệp văn bản, ta dùng hàm fseek() rewind() để dịch chuyển trỏ tệp tệp nhị phân Hàm fseek() dùng với tệp nhị phân khơng phải lưu ý dùng với tệp văn Nhận xét: Các hàm cặp hàm fread() – fwrite(), fscanf() – fprintf(), fputs() – fgets(), getc() – putc() có chức đối ngẫu 49 TỆP DỮ LIỆU 8.1 Khái niệm phân loại tệp 8.2 Các thao tác với tệp 8.2.1 Khai báo 8.2.2 Mở tệp 8.2.3 Truy nhập tệp văn 8.2.4 Truy nhập tệp nhị phân 8.2.5 Đóng tệp 8.3 Bài tập 50 8.2.5 Đóng tệp Đóng tệp đảm bảo thay đổi liệu lưu lại tệp Để đóng tệp ta dùng hàm fclose() có cú pháp khai báo: int fclose(FILE* ); Kết trả về: Nếu thành công Trả giá trị Ngược lại Trả giá trị EOF 51 Ví dụ tổng hợp #include #include #include void main() { FILE* fptr1, fptr2; //Khai bao bien tro tep int i; float f, a[100]; char file_name_2[20];//Xau ki tu chua ten tep thu clrscr(); // Mo tep c:\float.dat de ghi len dó 100 so thuc if((fptr1 = fopen("c:\\float.dat","wb"))==NULL) { printf("\n Khong mo duoc file c:\\float.dat"); printf("\n An phim bat ki de ket thuc!"); exit(1); } 52 Ví dụ tổng hợp (tiếp) //Tao 100 so thuc ghi vào mang a[100] for(i=0;i