Bài giảng Kỹ thuật lập trình: Chương 6 - Nguyễn Văn Huy
lượt xem 2
download
Bài giảng "Kỹ thuât lập trình - Chương 6: Tệp tin" cung cấp cho người học các kiến thức: Dẫn nhập, khai báo kiểu tệp tin, các thao tác truy xuất tệp tin, các hàm tệp tin. Mời các bạn cùng tham khảo nội dung chi tiết.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Kỹ thuật lập trình: Chương 6 - Nguyễn Văn Huy
- LOGO Chương VI Tệp Tin
- www.themegallery.com Nội dung chính 6.1 Dẫn nhập 6.2 Khai báo kiểu tệp tin 6.3 Các thao tác truy xuất tệp tin 6.4 Các hàm tệp tin Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 2
- www.themegallery.com 6.1 Dẫn nhập Quy trình làm việc với file 1 Tạo đối tượng file Mở file 2 Thao tác với tệp Đóng tệp 3 4 Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 3
- www.themegallery.com 6.2 Khai báo kiểu tệp tin Trong C++, để làm việc với các hàm xử lý file cần khai báo đầu chương trình: #include Trong thư viện fstream thì ta có 3 loại File stream cơ bản sau : ifstream : Dùng cho file nhập vào. Loại này chỉ có thể được dùng để đọc dữ liệu từ file vào bộ nhớ mà thôi. ofstream : Dùng cho file xuất ra. Loại này thì có thể dùng để tạo ra files và chép dữ liệu vào chúng. fstream : Đây là kênh file.(File stream). Loại này thì có thể vừa tạo file, vừa ghi dữ liệu vào file và đọc dữ dữ liệu từ file vào luôn. Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 4
- www.themegallery.com 6.2 Khai báo kiểu tệp tin Để định nghĩa một đối tương file ta chọn các cách sau: fstream DataFile; ifstream DataFile; ofstream DataFile; Nếu sử dụng thư viện stdio.h trong C thì để định nghĩa một đối tượng file ta sử dụng biến con trỏ như sau: FILE *DataFile; Trong đó DataFile là tên do người dùng đặt theo quy tắc định danh. Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 5
- www.themegallery.com 6.3 Các thao tác truy xuất tệp tin A. Sử dụng #include Ví dụ 1: Tạo và ghi dữ liệu vào file cùng thư mục trong project. #include #include using namespace std; int main() { ofstream FileDemo; //Định nghĩa đối tượng file là FileDemo FileDemo.open("ViDu.txt"); //Tạo và mở file với tên ViDu.txt FileDemo
- www.themegallery.com 6.3 Các thao tác truy xuất tệp tin Ví dụ 2: Tạo và ghi dữ liệu vào file trong ổ đĩa hoặc thư mục. #include #include using namespace std; int main() { fstream ViDu2("D://Demo1.txt",ios::out); /*Định nghĩa đối tượng file ViDu2 đồng thời tạo và mở file Demo1.txt tại một đường dẫn (ở đây là ổ D)*/ for(int i=0; i
- www.themegallery.com 6.3 Các thao tác truy xuất tệp tin Chú ý: Trong 1 đối tượng file, khi đang mở 1 tệp tin, muốn mở và thao tác với tệp tin khác thì ta phải đóng lại tệp hiện hành. Nếu sử dụng fstream để định nghĩa đối tượng file thì khi dùng lệnh mở 1 file (.open) thì nhất thiết phải thêm tham số thứ 2 để biểu thị chế độ mà ta mở file: ios::out - Mở file ở chế độ xuất ra, chế độ này cho phép ghi dữ liệu vào file. ios::in - Mở file ở chế độ nhập vào, tức là cho phép dữ liệu được đọc từ file. ios::app - Chế độ gắn vào. Nếu file đã được tạo thì nội dung của nó sẽ được thêm vào cuối của file. Nếu file chưa được tạo nó sẽ tạo ra 1 file mới. Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 8
- www.themegallery.com 6.3 Các thao tác truy xuất tệp tin Chú ý (tiếp): ios::ate - Nếu file đã được tạo, thì chương trình sẽ chuyển con trỏ về cuối file. ios::binary - Chế độ nhị phân. Khi mà file được mở ra ở chế độ này thì dữ liệu sẽ được đọc hay ghi từ 1 định dạng nguyên thủy nhị phân. ios::trunc - Nếu file đã được tạo thì nội dung của nó sẽ bị xóa đi. ios::nocreate - Không làm gì nếu file chưa có. ios::replace - Không làm gì nếu file đã có. Để kết hợp các chế độ ta dung toán tử |. Khi dùng riêng lẻ thì ios::out sẽ xóa nội dung của file nếu file đã được tạo sẵn. Tuy nhiên nếu dùng chung với ios::in, thì nội dung file cũ sẽ được giữ lại. Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 9
- www.themegallery.com 6.3 Các thao tác truy xuất tệp tin Ví dụ 3: Đọc dữ liệu từ file dùng toán tử >>. #include #include using namespace std; int main() { ifstream dataFile; char data[1000];// Chuỗi này để lưu dữ liệu từ file dataFile.open("Demo1.txt"); while (dataFile >>data) // Toán tử >> để ghi dữ liệu vào chuỗi data cout
- www.themegallery.com 6.3 Các thao tác truy xuất tệp tin Ví dụ 4: Đọc dữ liệu từ file dùng hàm getline #include #include using namespace std; int main() { ifstream dataFile; char data[1000];// Chuỗi này để lưu dữ liệu từ file dataFile.open("Demo1.txt"); dataFile.getline(data,1000); cout
- www.themegallery.com 6.3 Các thao tác truy xuất tệp tin B. Sử dụng #include Đầu tiên khai báo con trỏ FILE *f; Mở file: f = fopen(“path”,”chế độ mở”); path - Đường dẫn của file; Chế độ mở - Xem ở trang 14 của slide; Đọc dữ liệu từ file : fscanf(f, “%d”, &x); /*Đọc dữ liệu dạng số nguyên từ file cho vào biến x */ char s[80]; fgets(s, 80, f); /*Đưa vào chuỗi s tối đa 80 kí tự lấy từ file */ char c=getc(f); //Đọc 1 kí tự từ file lưu vào biến c Ghi dữ liệu vào file: fprintf(f,“%d”,x); // Xuất giá trị nguyên x ra file fputs(“Ky Thuat Lap Trinh”, f); //Xuất chuỗi ra file Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 12
- www.themegallery.com 6.3 Các thao tác truy xuất tệp tin B. Sử dụng #include Ví dụ 1: Mở và ghi dữ liệu lên file. #include int main() { FILE *data; // khai báo con trỏ data dạng FILE data = fopen("vdc.txt","w"); //w là chế độ xử lý file //Mở file vdc.txt để ghi dữ liệu lên đó ( w – ý nghĩa là mở để ghi) fprintf(data, "Day la vi du ve ghi du lieu len file"); //Hàm fprintf dùng để ghi dữ liệu vào file fclose(data);// Đóng file } Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 13
- www.themegallery.com 6.3 Các thao tác truy xuất tệp tin Các chế độ xử lý file: "r" - Mở một file có sẵn để đọc. "w" - Tạo file mới để ghi, nếu file có sẵn thì sẽ bị ghi mới hoàn toàn. "a" - Mở một file để ghi từ vị trí cuối cùng của file, nếu file không tồn tại sẽ tạo mới. "r+" - Mở một file có sẵn để đọc và ghi. "w+" - Tạo file mới để đọc và ghi, nếu file có sẵn thì sẽ bị ghi mới hoàn toàn. "a+" - Mở một file để để đọc và ghi. Có thể đọc từ đầu file, nhưng khi ghi thì ghi từ vị trí cuối cùng của file, nếu file không tồn tại sẽ tạo mới. Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 14
- www.themegallery.com 6.3 Các thao tác truy xuất tệp tin B. Sử dụng #include Ví dụ 2: Mở và đọc dữ liệu từ file. #include int main() { FILE *data; char dulieu[1000];// dùng để chứa nội dung file data = fopen("vdc.txt","r"); //mở file vdc.txt ở chế độ để đọc while(fscanf(data, "%s", dulieu)!=EOF) /*Sử dụng hàm fscanf để đọc dữ liệu từ file, EOF (end of file) – Nghĩa là đọc đến cuối file.*/ printf("%s ", dulieu);/* Hiển thị nội dung file đã lưu trong chuỗi dulieu */ fclose(data); // Đóng file } Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 15
- www.themegallery.com 6.4 Các hàm tệp tin A. Hàm get() - Đọc một kí tự bất kì từ file. Ví dụ sau sẽ xuất ra màn hình nội dung của tệp Demo1.txt #include #include using namespace std; int main() { ifstream dataFile; char data; dataFile.open("Demo1.txt"); while(dataFile.get(data)) cout
- www.themegallery.com 6.4 Các hàm tệp tin B. Hàm put() - Ghi một kí tự vào file. Ví dụ sau sẽ ghi nội dung 1 câu văn vào file Vidu.txt #include #include using namespace std; int main() { char ch; fstream dataFile("Vidu.txt", ios::out); cout
- www.themegallery.com 6.4 Các hàm tệp tin C. Hàm write() - Ghi file ở dạng nhị phân. Cách dùng như sau: fileObject.write(address, size); fileObject - Đối tượng file. address – Địa chỉ đầu tiên của 1 vùng nhớ được ghi vào file. size – Số lượng byte của vùng nhớ mà nó sẽ được ghi. Ví dụ 1: char kitu = 'A'; file.write(&kitu, sizeof(kitu)); Ví dụ 2: char Data[] = {'A', 'B', 'C', 'D'}; file.write(Data, sizeof(Data)); Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 18
- www.themegallery.com 6.4 Các hàm tệp tin D. Hàm read() - Đọc dữ liệu nhị phân từ file vào bộ nhớ. Cách dùng như sau: fileObject.read(address, size); fileObject - Đối tượng file. address – Là địa chỉ đầu tiên mà vùng nhớ mà dữ liệu được đọc vào được lưu. size – Số lượng byte trong bộ nhớ được đọc vào từ file. Ví dụ 1: char kitu = 'A'; file.read(&kitu, sizeof(kitu)); Ví dụ 2: char Data[5] file.read(Data, sizeof(Data)); Trường ĐH GTVT TP.HCM - Bài giảng : Kỹ thuật lập trình COMPANY LOGO 19
- www.themegallery.com Ví dụ sử dụng hàm write() và hàm read() #include #include using namespace std; int main() { const int SIZE = 4; char data[SIZE] = {'A', 'B', 'C', 'D'}, data2[SIZE]; fstream file; file.open("VD.dat", ios::out | ios::binary); file.write(data, sizeof(data)); file.close(); file.open("VD.dat", ios::in | ios::binary); file.read(data2, sizeof(data2)); for (int count = 0; count < SIZE; count++) cout
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Kỹ thuật lập trình hướng đối tượng với C++
134 p | 189 | 73
-
Bài giảng Ngôn ngữ lập trình C/C++
308 p | 69 | 14
-
Bài giảng Kĩ thuật lập trình
62 p | 66 | 9
-
Bài giảng Kỹ thuật lập trình: Chương 1 - Nguyễn Văn Huy
24 p | 35 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 2 - Nguyễn Văn Huy
20 p | 23 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 3 - Nguyễn Văn Huy
32 p | 19 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 4 - Nguyễn Văn Huy
22 p | 20 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 5 - Nguyễn Văn Huy
20 p | 24 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn