Bài giảng Kỹ thuật lập trình: Tập tin - Trịnh Tấn Đạt
lượt xem 4
download
Bài giảng "Kỹ thuật lập trình: Tập tin" cung cấp cho người học các kiến thức: Khái niệm về FILE, các thao tác cơ bản với file trong C, các thao tác cơ bản với file trong C++. Cuối bài giảng có phần bài tập để người học ôn tập và củng cố kiến thức.
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
- 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ề 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ự tìm hiểu thêm - option)
- FILE ▪ 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. ▪ 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. ▪ Một file dù được xây dựng bằng cách nào đi nữa cũng chỉ đơn giản 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ó 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
- 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 */ ▪ Để 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 *file; 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 *file, const char *mode); Trong đó : • file: 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. ▪ 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.
- 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ự. ▪ Truy xuất tập tin văn bản: o theo từng ký tự o theo từng dòng ▪ Để mở file dạng văn bản dùng mode “t”
- Mở FILE ▪ Mode: open file
- Mở FILE ▪ Ví dụ const char *filePath = "C:/Desktop/my_document.txt"; FILE *file; file = fopen(filePath, "rt"); // doc file van ban if (!file) // (file == 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 *file); file: 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 *file; file = fopen(filePath, "rt"); if (!file) // file == 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
- 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 *file; file = fopen(filePath, "wt"); // che do ghi if (!file) // file == NULL cout
- Ghi FILE ▪ Các hàm cơ bản để ghi FILE ▪ Hàm fputc: int fputc(int c, FILE *f); ▪ Hàm fputc sẽ ghi ký tự có mã ASCII là biến c vào file được trỏ đến bởi con trỏ f. ▪ 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 *file = fopen(filePath, "wt"); // dùng con trỏ file int c = fputc('A', file); // ghi ký tự A vào file my_document.txt cout
- Ghi FILE ▪ Các hàm cơ bản để ghi FILE ▪ Hàm fputs: int fputs(const char *str, FILE *f); ▪ Hàm fputs ghi một C-Style string vào file được trỏ đến bởi con trỏ f cho đến khi gặp kí tự '\0' Ví dụ: FILE *file = fopen(filePath, "wt"); // dùng con trỏ file fputs("Hello World", file); // ghi chuỗi Hello World vào file my_document.txt
- Ghi FILE ▪ Các hàm cơ bản để ghi FILE ▪ Hàm fprintf : int fprintf(FILE *f, const char *format, ...); ▪ Hàm fprintf tương tự hàm printf trong ngôn ngữ C nhưng được dùng để ghi dữ liệu lên file Ví dụ: FILE *file = fopen(filePath, "wt"); // dùng con trỏ file for (int i = 1; i
- Ghi FILE ▪ Ví dụ ghi FILE dùng hàm void writeToFile(FILE *file) const char *filePath = "C:/Desktop/my_document.txt"; FILE *file; file = fopen(filePath, "wt"); if (!file) // file == NULL cout
- Đọc FILE ▪ Đọc dữ liệu từ FILE ▪ Để đọc dữ liệu từ file, yêu cầu file đó đã tồn tại và được lưu trữ sẵn. Ngược lại sẽ xuất hiện lỗi (file chưa tồn tại) ▪ Để mở file cho chế độ đọc file, chúng ta có các mode "r", "r+", "a", "a+". const char *filePath = "C:/Desktop/my_document.txt"; // file này đã tồn tại FILE *file; file = fopen(filePath, "rt"); // che do doc file if (!file) // file == NULL cout
- Đọc FILE ▪ Các hàm cơ bản để đọc FILE ▪ Hàm fgetc: int fgetc(FILE *f); ▪ Hàm fgetc đọc ra một kí tự trong file, internal file position indicator sẽ chuyển đến kí tự tiếp theo. Giá trị trả về là mã ASCII của kí tự đã đọc được. Ví dụ: FILE *file = fopen(filePath, "rt"); // dùng con trỏ file cout
- Đọc FILE ▪ Các hàm cơ bản để đọc FILE ▪ Hàm fgets : char* fgets(char *buf, int n, FILE *f); ▪ Hàm fgets đọc từ file ra (n - 1) kí tự, việc đọc dữ liệu sẽ bị dừng nếu đọc được kí tự new line '\n' hoặc EOF. ▪ Chuỗi kí tự đọc được sẽ lưu vào vùng nhớ được quản lý bởi con trỏ buf, nếu đọc dữ liệu thành công thì trả về địa chỉ của buf, ngược lại trả về NULL. Ví dụ: FILE *file = fopen(filePath, "rt"); // dùng con trỏ file char buff[255]; // buffer lưu trữ dữ liệu đọc được cout
- Đọc FILE ▪ Các hàm cơ bản để đọc FILE ▪ Hàm fscanf : int fscanf(FILE *f, const char *format, ...); ▪ fscanf cũng hoạt động tương tự hàm scanf trong ngôn ngữ C nhưng được dùng để đọc dữ liệu từ file Ví dụ: FILE *file = fopen(filePath, "rt"); // dùng con trỏ file char buff[255]; - Chuỗi ký tự. Nó sẽ đọc các ký tự liên tiếp nhau tới khi tìm thấy fscanf(file, "%s", buff); một whitespace (có thể là blank, newline (dòng mới) và tab) cout
- Đọc FILE ▪ Ví dụ đọc FILE dùng hàm void readFromFile(FILE *file) const char *filePath = "C:/Desktop/my_document.txt"; // file đã tồn tại FILE *file; file = fopen(filePath, "rt"); if (!file) // file == NULL std::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 | 10 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 9 - Trần Quang
33 p | 5 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 8 - Trần Quang
34 p | 9 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 6 - Trần Quang
37 p | 12 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 4 - Trần Quang
32 p | 8 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 3 - Trần Quang
52 p | 11 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 2 - Trần Quang
25 p | 11 | 2
-
Bài giảng Kỹ thuật lập trình: Hàm nâng cao (Phần 1) - ThS. Đặng Bình Phương
26 p | 0 | 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 | 1 | 0
-
Bài giảng Kỹ thuật lập trình: Tập tin - ThS. Đặng Bình Phương
48 p | 3 | 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 | 2 | 0
-
Bài giảng Kỹ thuật lập trình: Dữ liệu kiểu cấu trúc - ThS. Đặng Bình Phương
33 p | 2 | 0
-
Bài giảng Kỹ thuật lập trình: Chuỗi ký tự - ThS. Đặng Bình Phương
20 p | 3 | 0
-
Bài giảng Kỹ thuật lập trình: Danh sách liên kết - ThS. Đặng Bình Phương
20 p | 2 | 0
-
Bài giảng Kỹ thuật lập trình: Chuyển đổi kiểu dữ liệu và cấp phát bộ nhớ động - ThS. Đặng Bình Phương
28 p | 3 | 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 | 1 | 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 | 1 | 0
-
Bài giảng Kỹ thuật lập trình: Hàm nâng cao (Phần 2) - ThS. Đặng Bình Phương
30 p | 0 | 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