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ÔNG S CHOOL 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 dữ liệu (File) là một tập hợp các dữ liệu có liên quan với nhau và có cùng kiểu dữ liệu. Tệp được lưu trữ trên các thiết bị nhớ ngồi (đĩa mềm, đĩa cứng, CDROM…) với một tên nào đó để phân biệt với nhau 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 bản chất dữ liệu của tệp, người ta chia tệp thành 2 loại: Tệp văn bản Tệp nhị phân 8.1.2 Phân loại tệp (tiếp) Tệp văn bản (text file): Các phần tử của nó là các kí tự gồm: Chữ cái 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 là 13, để về đầu dòng LF – Line Feed – có mã ASCII là 10, để xuống dòng mới … 8.1.2 Phân loại tệp (tiếp) Tệp nhị phân (binary file): Các phần tử của nó là các số nhị phân 0 và 1 mã hóa thơng tin. Thơng tin được mã hóa bởi các bit nhị phân có thể là số ngun, số thực, các cấu trúc dữ liệu… Nếu thơng tin được mã hóa là kí tự thì khi đó tệp nhị phân trở thành tệp văn bản. Vì vậy tệp văn bản là một trường hợp riêng của tệp nhị phân 8.1.3. Vai trò của tệp Khi chương trình kết thúc hoặc khi tắt máy thì các thơng tin trong bộ nhớ chính (RAM) khơng còn. Muốn lưu trữ dữ liệu lâu dài để sử dụng cho những lần sau ta phải lưu dữ liệu lên tệp, tức là để dữ liệu nằm ở bộ nhớ ngồi. Tệp là phương tiện dùng để cất giữ dữ liệu lâu dài 10 8.2.4 Truy nhập tệp nhị phân Đọc liệu tệp Ghi liệu tệp Dịch chuyển 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 một khối dữ liệu kích thước = so_muc*so_byte bytes, sau đó ghi khối dữ liệu đó lên vùng nhớ có địa chỉ là dia_chi_bien Kết quả trả về: Nếu thành cơng Trả về một giá trị ngun là số mục (khơng phải số bytes) đọc được từ tệp Ngược lại Trả về giá trị 0 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() sẽ đọc từ bộ nhớ một khối dữ liệu có địa chỉ bắt đầu là dia_chi_bien và có kích thước là so_byte*so_muc bytes, sau đó nó ghi khối dữ liệu này lên tệp Kết quả trả về: Nếu thành cơng Trả về một giá trị ngun là số mục (khơng phải số bytes) đã ghi lên tệp Ngược lại Trả về giá trị 0 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 trong các cặp hàm fread() – fwrite(), fscanf() – fprintf(), fputs() – fgets(), và getc() – putc() có chức năng đối ngẫu nhau 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 quả trả về: Nếu thành cơng Trả về giá trị 0 Ngược lại Trả về 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