
Bài giảng Kỹ thuật lập trình: Tập tin - Trịnh Tấn Đạt (2024)
lượt xem 0
download

Bài giảng "Kỹ thuật lập trình: Tập tin" trình bày các nội dung: Khái niệm về Stream (luồng), khái niệm về file, các thao tác cơ bản với file trong C, mở/đóng file, đọc/Ghi file, con trỏ file, Binary file (option), file và mảng, bài tập, các thao tác cơ bản với file trong C ++ (tìm hiểu thêm - option). 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: Tập tin - Trịnh Tấn Đạt (2024)
- Tập tin (FILE) Trịnh Tấn Đạt Khoa CNTT - Đại Học Sài Gòn Email: trinhtandat@sgu.edu.vn Website: https://sites.google.com/site/ttdat88/
- Nội dung ▪ Khái niệm về Stream (luồng) ▪ Khái niệm về FILE ▪ Các thao tác cơ bản với file trong C o Mở/Đóng FILE o Đọc/Ghi FILE o Con trỏ FILE o Binary FILE (option) o FILE và mảng ▪ Bài Tập ▪ Các thao tác cơ bản với file trong C ++ (tìm hiểu thêm - option)
- Stream ▪ Dữ liệu trong chương trình (biến, mảng, cấu trúc, hàm, …) được lưu trữ tạm trong bộ nhớ RAM. ▪ Dữ liệu được lưu vào RAM và gửi ra ngoài chương trình thông qua các thiết bị (device) o Thiết bị nhập (input device): bàn phím, mouse, … o Thiết bị xuất (output device): màn hình, máy in, … o Thiết bị vừa nhập vừa xuất: tập tin ▪ Các thiết bị đều thực hiện mọi xử lý thông qua các luồng (stream).
- Stream ▪ Hệ thống nhập/xuất của C cung cấp cho người dùng một môi trường độc lập với thiết bị đang truy cập. ▪ Môi trường này là một sự biểu diễn trừu tượng của thiết bị gọi là một stream và thiết bị thật sự được gọi là tập tin (file). ▪ Stream: là một môi trường trung gian để giao tiếp (nhập/xuất thông tin) giữa chương trình và thiết bị. ▪ Muốn nhập/xuất thông tin cho một thiết bị chúng ta sẽ gửi thông tin cho stream nối với thiết bị đó (độc lập với thiết bị). ▪ Stream là dãy byte dữ liệu: o Input stream o Output stream
- Stream ❖ Stream chia thành 02 loại: stream văn bản và stream nhị phân ▪ Stream văn bản (text) o Chỉ chứa các ký tự. o Tổ chức thành từng dòng, mỗi dòng tối đa 255 ký tự, kết thúc bởi ký tự cuối dòng '\0' hoặc ký tự sang dòng mới '\n'. ▪ Stream nhị phân (binary) o Chứa các byte. o Được đọc và ghi chính xác từng byte. o Xử lý dữ liệu bất kỳ, kể cả dữ liệu văn bản. o Được sử dụng chủ yếu với các tập tin trên đĩa
- Stream ▪ Các stream chuẩn định nghĩa sẵn Tên Stream Thiết bị tương ứng stdin Nhập chuẩn Bàn phím stdout Xuất chuẩn Màn hình stderr Lỗi chuẩn Màn hình stdprn In chuẩn Máy in (LPT1:) Ví dụ (hàm fprintf xuất ra stream xác định) • Xuất ra màn hình: fprintf(stdout, "Hello"); • Xuất ra máy in: fprintf(stdprn, "Hello"); • Xuất ra thiết bị báo lỗi: fprintf(stderr, "Hello"); • Xuất ra tập tin (stream fp): fprintf(fp, "Hello");
- FILE (tập tin) ▪ Theo định nghĩa trên Wikipedia về computer file: Một file trên máy tính là một tài nguyên dùng để lưu trữ thông tin lâu dài, sử dụng cho các chương trình máy tính. ▪ Tại sao cần tập tin: o Dữ liệu giới hạn và được lưu trữ tạm thời • Nhập: gõ từ bàn phím. • Xuất: hiển thị trên màn hình. • Lưu trữ dữ liệu: trong bộ nhớ RAM. Mất thời gian, không giải quyết được bài toán với số dữ liệu lớn. o Cần một thiết bị lưu trữ sao cho dữ liệu vẫn còn khi kết thúc chương trình, có thể sử dụng nhiều lần và kích thước không hạn chế.
- FILE ▪ Trong ngôn ngữ lập trình C/C++: File là kiểu đối tượng chứa các thông tin cần thiết để điều khiển, bao gồm một con trỏ trỏ đến buffer của nó, các chỉ mục và trạng thái của nó. ▪ File là một kiểu dữ liệu có cấu trúc. ▪ Là một dãy các byte ghi trên đĩa. Số byte của dãy chính là độ dài của file. ▪ Được lưu trữ trong các thiết bị lưu trữ ngoài như đĩa mềm, đĩa cứng, USB… o Vẫn tồn tại khi chương trình kết thúc. o Kích thước không hạn chế (tùy vào thiết bị lưu trữ) ▪ Có hai kiểu nhập/xuất dữ liệu lên file: nhị phân và văn bản. ▪ Làm việc với File chúng ta chỉ có các thao tác cơ bản như: tạo file mới, đọc dữ liệu trong file, ghi dữ liệu vào file, xóa file... ▪ Trong lập trình C, dùng thư viện để thao tác trên FILE
- FILE ❖ Tập tin văn bản : là kiểu tập tin được lưu trữ các thông tin dưới dạng kiểu ký tự. ▪ Mỗi dòng dài tối đa 255 ký tự và kết thúc bằng ký hiệu cuối dòng (end_of_line). ▪ Truy xuất tập tin văn bản: o theo từng ký tự o theo từng dòng ❖ Tập tin nhị phân : ▪ Dữ liệu được đọc và ghi một cách chính xác, không có sự chuyển đổi nào cả. ▪ Ký tự kết thúc chuỗi '\0' và end_of_line không có ý nghĩa là cuối chuỗi và cuối dòng mà được xử lý như mọi ký tự khác.
- Định vị tập tin ❖ Đường dẫn (path) ▪ Chỉ đến một tập tin không nằm trong thư mục hiện hành. Ví dụ: F:\folder1\file1.txt chỉ tập tin file1.txt nằm trong thư mục folder1 của ổ đĩa F. ▪ Trong chương trình, đường dẫn này được ghi trong chuỗi như sau: "F:\\folder1\\file1.txt"
- Qui trình làm việc với FILE 1. Mở tập tin: tạo một stream nối kết với tập tin cần mở, stream được quản lý bởi biến con trỏ đến cấu trúc FILE o Cấu trúc được định sẵn trong thư viện stdio.h o Các thành phần của cấu trúc này được dùng trong các thao tác xử lý tập tin. 2. Sử dụng tập tin (sau khi đã mở được tập tin) o Đọc dữ liệu từ tập tin đưa vào chương trình. o Ghi dữ liệu từ chương trình lên tập tin. 3. Đóng tập tin (sau khi sử dụng xong).
- Các thao tác cơ bản với file trong C ❖ Khai báo và sử dụng FILE : Kiểu FILE * ▪ Cú pháp : FILE *ten_con_tro_file; Ví dụ: FILE *f, *g; /* Khai báo hai biến con trỏ tập tin*/ ▪ Để làm việc với file, chúng ta cần biết vị trí của file (thông qua đường dẫn) để con trỏ kiểu FILE có thể tạo được luồng dữ liệu giữa người dùng và file trên thiết bị lưu trữ. Ví dụ: một file văn bản (*.txt) hoặc dạng (*.INP) được lưu trữ như sau C:\Desktop\my_document.txt Trong C khai báo con trỏ đến chuỗi ký tự lưu trữ đường dẫn và tên file const char *filePath = "C:\\Desktop\\my_document.txt"; // con trỏ đén hằng số kiểu chuỗi #include #include using namespace std; int main() { const char *filePath = "C:\\Desktop\\my_document.txt"; FILE *fp; return 0; }
- FILE ❖ Open file (Mở FILE): Để mở một file, các bạn có thể sử dụng hàm fopen ▪ Cú pháp: FILE* fopen(const char *filename, const char *mode); Trong đó : • filename: tên tập tin cần mở. Có thể chỉ định một đường dẫn đầy đủ chỉ đến vị trí của tập tin. • mode: chế độ mở tập tin: chỉ đọc, để ghi (tạo mới), ghi thêm. Để mở file dạng văn bản dùng mode “t” ▪ Hàm dùng để mở file. Nếu thành công hàm cho con trỏ kiểu FILE ứng với file vừa mở. Các hàm liên quan khác sẽ làm việc với file thông qua con trỏ này. Nếu có lỗi hàm sẽ trả về giá trị NULL.
- Mở FILE ▪ Mode: open file
- Mở FILE ▪ Ví dụ const char *filePath = "C:\\Desktop\\my_document.txt"; FILE *fp; fp = fopen(filePath, "rt"); // doc file van ban if (!fp) // (fp == NULL) cout
- Đóng FILE ❖ Đóng file (close FILE): Sau khi thao tác với file xong, các bạn cần đóng file lại để tránh những lỗi phát sinh ngoài ý muốn. Để đóng file, chúng ta sử dụng hàm fclose: ▪ Cú pháp : int fclose(FILE *fp); o fp: là con trỏ được dùng để lưu trữ địa chỉ của đối tượng FILE đang mở. Nếu đóng file thành công thì trả về giá trị 0, ngược lại trả về EOF (End of file) ▪ Hàm fclose sẽ giải phóng tất cả dữ liệu chưa được xử lý trên file nếu chúng vẫn còn lưu trong buffer, đóng file lại, và giải phóng tất cả vùng nhớ mà đối tượng FILE sử dụng. const char *filePath = "C:\\Desktop\\my_document.txt"; FILE *fp; fp = fopen(filePath, "rt"); if (!fp) // (fp == NULL) cout
- FILE ❖ Làm sạch vùng đệm - hàm fflush ▪ Cú pháp: int fflush(FILE *fp); ▪ Dùng làm sạch vùng đệm của tệp fp. Nếu lệnh thành công, hàm sẽ cho giá trị 0, trái lại nó cho hàm EOF. ▪ Ví dụ: fflush(fp); // fp là con trỏ FILE
- Đọc và ghi dữ liệu (stdio.h) ❖ Thực hiện đọc/ghi dữ liệu theo các cách sau: ▪ Nhập/xuất theo định dạng o Hàm: fscanf, fprintf o Chỉ dùng với tập tin kiểu văn bản. ▪ Nhập/xuất từng ký tự hay dòng lên tập tin o Hàm: getc, fgetc, fgets, putc, fputs o Chỉ nên dùng với kiểu văn bản. ▪ Đọc/ghi trực tiếp dữ liệu từ bộ nhớ lên tập tin o Hàm: fread, fwrite o Chỉ dùng với tập tin kiểu nhị phân.
- Ghi FILE ❖ Ghi dữ liệu vào FILE. ▪ Để mở file cho chế độ ghi file, chúng ta có các mode "w", "w+", "a", "a+". Ví dụ: Giả sử đọc file và dùng con trỏ fie để quản lý const char *filePath = "C:\\Desktop\\my_document.txt"; FILE *fp; fp = fopen(filePath, "wt"); // ghi file if (!fp) // (fp == NULL) cout
- Ghi FILE ❖ Các hàm cơ bản để ghi FILE ▪ Hàm fputc: int fputc(int c, FILE *fp); ▪ Hàm fputc sẽ ghi ký tự có mã ASCII là biến c vào file được trỏ đến bởi con trỏ fp. ▪ Giá trị trả về là EOF nếu ghi dữ liệu thất bại, trả về mã ASCII của kí tự được ghi vào nếu thực hiện thành công. Ví dụ: FILE *fp= fopen(filePath, "wt"); // dùng con trỏ file fp int c = fputc('A', fp); // ghi ký tự A vào file my_document.txt cout

CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Kỹ thuật lập trình: Chương 1 - Trần Quang
39 p |
35 |
2
-
Bài giảng Kỹ thuật lập trình: Chương 9 - Trần Quang
33 p |
18 |
2
-
Bài giảng Kỹ thuật lập trình: Chương 8 - Trần Quang
34 p |
35 |
2
-
Bài giảng Kỹ thuật lập trình: Chương 7 - Trần Quang
28 p |
40 |
2
-
Bài giảng Kỹ thuật lập trình: Chương 6 - Trần Quang
37 p |
42 |
2
-
Bài giảng Kỹ thuật lập trình: Chương 4 - Trần Quang
32 p |
34 |
2
-
Bài giảng Kỹ thuật lập trình: Chương 3 - Trần Quang
52 p |
38 |
2
-
Bài giảng Kỹ thuật lập trình: Chương 2 - Trần Quang
25 p |
39 |
2
-
Bài giảng Kỹ thuật lập trình: Các phương pháp giải quyết bài toán trên máy tính - Trịnh Tấn Đạt (2024)
22 p |
5 |
1
-
Bài giảng Kỹ thuật lập trình: Giới thiệu môn học - Trịnh Tấn Đạt (2024)
32 p |
3 |
1
-
Bài giảng Kỹ thuật lập trình: Chuỗi ký tự - Trịnh Tấn Đạt (2024)
63 p |
1 |
0
-
Bài giảng Kỹ thuật lập trình: Các kỹ thuật thao tác trên bit - ThS. Đặng Bình Phương
29 p |
29 |
0
-
Bài giảng Kỹ thuật lập trình: Kỹ thuật lập trình đệ quy - ThS. Đặng Bình Phương
44 p |
29 |
0
-
Bài giảng Kỹ thuật lập trình: Chuỗi ký tự - ThS. Đặng Bình Phương
20 p |
30 |
0
-
Bài giảng Kỹ thuật lập trình: Dữ liệu kiểu con trỏ (Nâng cao) - ThS. Đặng Bình Phương
48 p |
30 |
0
-
Bài giảng Kỹ thuật lập trình: Dữ liệu kiểu con trỏ (Cơ bản) - ThS. Đặng Bình Phương
40 p |
10 |
0
-
Bài giảng Kỹ thuật lập trình: Giới thiệu môn học - ThS. Đặng Bình Phương
7 p |
29 |
0
-
Bài giảng Kỹ thuật lập trình: Các kỹ thuật lập trình nâng cao - Trịnh Tấn Đạt (2024)
86 p |
2 |
0


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
