intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Kỹ thuật lập trình: Tập tin - Trịnh Tấn Đạt

Chia sẻ: Minh Vũ | Ngày: | Loại File: PDF | Số trang:42

61
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Kỹ thuật lập trình: Tập tin - Trịnh Tấn Đạt

  1. 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/
  2. 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)
  3. 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
  4. 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; }
  5. 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.
  6. 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”
  7. Mở FILE ▪ Mode: open file
  8. 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
  9. Đó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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. Đọ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
  17. Đọ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
  18. Đọ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
  19. Đọ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
  20. Đọ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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2