Bài giảng Kỹ thuật lập trình: Chương 6 - Trần Minh Thái
Chia sẻ: Bautroibinhyen27 Bautroibinhyen27 | Ngày: | Loại File: PPTX | Số trang:35
lượt xem 6
download
Bài giảng "Kỹ thuật lập trình - Chương 6: Thao tác trên tập tin" cung cấp cho người học các kiến thức: Khái niệm, khai báo, các thao tác trên tập tin. Cuối bài giảng có phần bài tập giúp người học có thể ôn tập và củng cố kiến thức đã họ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: Chương 6 - Trần Minh Thái
- Lập trình C Chương 6. Thao tác trên tập tin (3 tiết) Trần Minh Thái Email: minhthai@huflit.edu.vn Website: www.minhthai.edu.vn Cập nhật: 20/03/2017
- Nội dung • Khái niệm • Khai báo • Các thao tác trên tập tin • Bài tập 2
- KHÁI NIỆM
- Khái niệm • File cho phép lưu trữ dữ liệu ở bộ nhớ ngoài (đĩa) • File có thể lưu dữ liệu kích thước lớn với số lượng các phần tử không hạn chế (chỉ bị hạn chế bởi dung lượng của bộ nhớ ngoài) 4
- Khái niệm • Biến File: là một biến thuộc kiểu dữ liệu tập tin dùng để đại diện cho một tập tin • Con trỏ tập tin: Xác định vị trí trong tập tin khi thao tác đọc /ghi • Phân loại File: • File text • File nhị phân 5
- File text • Dùng để ghi các ký tự lên đĩa dưới dạng mã Ascii • Dữ liệu của tập tin được lưu trữ thành các dòng, mỗi dòng được kết thúc bằng ký tự xuống dòng (new line), ký hiệu ‘\n’ • Mỗi tập tin được kết thúc bởi ký tự EOF (End Of File) có mã Ascii là 26 (xác định bởi tổ hợp phím Ctrl + Z) 6
- File nhị phân • Một dãy các bytes liên tục • Nội dung dữ liệu được mã hóa 7
- CÁC THAO TÁC TRÊN FILE
- Các thao tác khi thao tác trên File 1. Khai báo con trỏ file 2. Mở file 3. Thao tác đọc/ ghi trên file 4. Đóng file 9
- Khai báo con trỏ file • Cú pháp: FILE ; • Các biến trong danh sách phải là các con trỏ và được phân cách bởi dấu phẩy(,) • Ví dụ: FILE *f1, *f2; 10
- Mở file • Cú pháp: FILE *fopen(char *path, const char *mode) • Trong đó: • path: chuỗi chỉ đường dẫn đến tập tin trên đĩa • mode: chuỗi xác định cách thức mà tập tin sẽ mở • Hàm fopen trả về một con trỏ tập tin. Nếu có lỗi xuất hiện trong khi mở tập tin thì trả về con trỏ NULL 11
- Các thông tin Mode Mode Ý nghĩa r Mở tập tin văn bản để đọc w Tạo ra tập tin văn bản mới để ghi a Nối vào tập tin văn bản rb Mở tập tin nhị phân để đọc wb Tạo ra tập tin nhị phân để ghi ab Nối vào tập tin nhị phân r+ Mở một tập tin văn bản để đọc/ghi w+ Tạo ra tập tin văn bản để đọc ghi a+ Nối vào hay tạo mới tập tin văn bản để đọc/ghi r+b Mở ra tập tin nhị phân để đọc/ghi w+b Tạo ra tập tin nhị phân để đọc/ghi a+b Nối vào hay tạo mới tập tin nhị phân 12
- Ví dụ tạo mới file text “test.txt” ở ổ đĩa D: FILE *f; f = fopen(“D:\\test.txt”, “w”); if (f!=NULL) { /* Các câu lệnh để thao tác với tập tin*/ /* Đóng tập tin*/ } 13
- Đóng tập tin • Cú pháp: int fclose(FILE *f) • Trong đó f là con trỏ tập tin được mở bởi hàm fopen() • Trả về 0: đóng tập tin thành công • Trả về EOF nếu có xuất hiện lỗi • Đóng tất cả các tập tin lại: int fcloseall() 14
- Thao tác trên File text STT TÊN HÀM Ý NGHĨA SỬ DUNG ̣ VÍ DỤ ̣ ̣ ĐOC TÂP TIN ̣ ̣ fscanf(FILE *, đinh dang, ca ́c fscanf(f, “%d”, 1 Đọc dữ liêu t ̣ ừ tâp tin ̣ tham biến) &x); ̣ Đoc chuô ̃i ký tự từ tâp ̣ fgets(chuỗi, kích thước tối tin với kích thước tối char s[80]; 2 đa, FILE *) ̣ đa cho phép, hoăc găp ̣ fgets(s, 80, f); ký tự xuống dòng char c=getc(f); 3 getc(FILE *) ̣ Đoc ky ́ tự từ tâp tin ̣ ̣ GHI TÂP TIN ̣ ̣ fprintf(FILE *, đinh dang, 1 các tham biến) Ghi dữ liêu va ̣ ̣ ̀o tâp tin fprintf(f, “%d”, x); fputs(chuỗi, FILE *) Ghi chuỗi ký tự vào tâp ̣ 2 fputs(“Vi du”, f); tin 15
- Ví dụ Tạo tập tin văn bản “so.out” gồm n số nguyên, các số của dãy được tạo ngẫu nhiên có giá trị không vượt quá M (n, M đọc từ tập tin “so.inp”). Kết quả chương trình là 1 tập tin văn bản có dòng thứ nhất ghi số n; n dòng tiếp theo ghi các số tạo được, mỗi số trên một dòng File so.out 3 File so.inp 5 3 7 10 2 16
- # define in “SO.INP” int main() # define out “SO.OUT” { void DocFile(int &n, int &M) int n, M; { srand((unsigned int)time(NULL)); FILE *fi; DocFile(n, M); fi = fopen(in, "r"); GhiFile(n, M); fscanf(fi, "%d%d", &n, &M); return 0; fclose(fi); } void GhiFile(int n, int M) } { FILE *fo; fo = fopen(out, "w"); fprintf(fo, "%d\n", n); for (; n > 0; n) fprintf(fo, "%d\n", rand()%(M 1) + 1); fclose(fo); 17 }
- Bài tập Viết các hàm sau: 1. Tạo mảng 1 chiều số nguyên a (giá trị ngẫu nhiên < 100) có kích thước n (0
- Bài tập Cho file “test.inp” có cấu trúc như sau • Dòng đầu tiên là số nguyên n • Dòng tiếp theo là n giá trị nguyên cách nhau bởi khoảng trắng Hãy viết các hàm tìm phần tử có giá trị lớn nhất, phần tử nhỏ nhất, số lượng phần tử chẵn, lẻ. Sau đó lưu vào file “kq.out” gồm các dòng sau: • Dòng 1: So lon nhat la: … • Dòng 2: So nho nhat la: … • Dòng 3: So phan tu chan la: … • Dòng 4: So phan tu le la: … 19
- Thao tác trên File nhị phân Ý NGHĨA SỬ STT TÊN HÀM VÍ DỤ DUNG̣ ̣ ĐOC TÂP TIṆ ptr: vùng nhớ đê ̉ lưu dữ liêu đoc ̣ ̣ int a[30], b, n; size: kích thước fread(a, 1 fread(&ptr, size, len, FILE *) mỗi ô nhớ (tính sizeof(int), n , f); bằng byte) Fread(&b, ̣ ̀i dữ liêu len: đô da ̣ sizeof(int), 1 , f); cần đoc̣ ̣ GHI TÂP TIN Tham số tương tự fwrite(a, 1 fwrite(&prt, size, len, FILE *) như hàm fread sizeof(int), n , f); 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Kỹ thuật lập trình - Phạm Thế Bảo
0 p | 220 | 32
-
Bài giảng Kỹ thuật lập trình: Chương I - Lưu Hồng Việt
48 p | 194 | 23
-
Bài giảng Kỹ thuật lập trình: Chương IV - Lưu Hồng Việt
32 p | 151 | 17
-
Bài giảng Kỹ thuật lập trình: Chương III - Lưu Hồng Việt
51 p | 147 | 15
-
Bài giảng Kỹ thuật lập trình: Chương V - Lưu Hồng Việt
19 p | 127 | 15
-
Bài giảng Kỹ thuật lập trình: Phần 1 - ĐH CNTT&TT
37 p | 114 | 10
-
Bài giảng Kỹ thuật lập trình - Bài 1: Tổng quan về kỹ thuật lập trình
65 p | 164 | 8
-
Bài giảng Kỹ thuật lập trình: Bài 1 - Phạm Đình Sắc
9 p | 127 | 7
-
Bài giảng Kỹ thuật lập trình nâng cao: Chương 4 - ThS. Dương Thành Phết
26 p | 92 | 7
-
Bài giảng Kỹ thuật lập trình - Chương 10: Tổng kết môn học (Trường Đại học Bách khoa Hà Nội)
67 p | 15 | 4
-
Bài giảng Kỹ thuật lập trình: Chương 1 - Trần Quang
39 p | 8 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 2 - Trần Quang
25 p | 10 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 7 - Trần Quang
28 p | 6 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 8 - Trần Quang
34 p | 7 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 9 - Trần Quang
33 p | 3 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 3 - Trần Quang
52 p | 8 | 1
-
Bài giảng Kỹ thuật lập trình: Chương 4 - Trần Quang
32 p | 6 | 1
-
Bài giảng Kỹ thuật lập trình: Chương 6 - Trần Quang
37 p | 10 | 1
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