KỸ THUẬT lập TRÌNH tập TIN

34 3 0
KỸ THUẬT lập TRÌNH tập TIN

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Trường Đại học Khoa học Tự nhiên Khoa Công nghệ thông tin Bộ môn Tin học sở KỸ THU T L P TRÌNH T P TIN & VC BB Nội dung Khái niệm dòng (stream) Khái niệm phân loại tập tin Các thao tác xử lý Một số hàm quản lý tập tin Tập tin & VC BB Nhập xuất  C lưu liệu chương trình nhớ RAM  Dữ liệu nạp vào chương trình gửi ngồi chương trình thơng qua thiết bị (device) • Thiết bị nhập (input device): bàn phím, chuột • Thiết bị xuất (output device): hình, máy in • Thiết bị vừa nhập vừa xuất: t p tin  Các thiết bị thực xử lý thơng qua dịng (stream) Tập tin & VC BB Stream (dịng) Khái niệm  Là mơi trường trung gian để giao tiếp (nhận/ gửi thông tin) chương trình thiết bị  Muốn nhận/gửi thơng tin cho thiết bị ta gửi thông tin cho stream nối với thiết bị  Stream dãy byte liệu • “Chảy” vào chương trình gọi stream nhập • “Chảy” chương trình gọi stream xuất Tập tin & VC BB Stream (dòng) Phân loại  Stream văn (text) • Chỉ chứa ký tự • Tổ chức thành hàng, hàng tối đa 255 ký tự, kết thúc ký tự cuối hàng „\0‟ ký tự sang hàng „\n‟  Stream nhị phân (binary) • Chứa byte • Được đọc ghi xác byte • Xử lý liệu bất kỳ, kể liệu văn • Được sử dụng chủ yếu với tập tin đĩa Tập tin & Stream (dòng) VC BB 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ài phím stdout Xuất chuẩn Màn hình stderr Lỗi chuẩn Màn hình stdprn (MS-DOS) In chuẩn Máy in (LPT1:) stdaux (MS-DOS) Phụ chuẩn Cổng nối tiếp COM 1: Ví dụ (hàm fprintf xuất stream xác định)     Xuất Xuất Xuất Xuất ra ra hình: máy in: thiết bị báo lỗi: tập tin (FILE* fp): fprintf(stdout, “Hello”); fprintf(stdprn, “Hello”); fprintf(stderr, “Hello”); fprintf(fp, “Hello”); Tập tin & VC BB Tập tin Tập tin Bộ nhớ  Giống nhau: lưu trữ liệu  Khác nhau: Tiêu chí T p tin Bộ nhớ Tốc độ xử lý Chậm Nhanh Chi phí Rẻ tiền Đắt tiền Dung lượng Lớn Nhỏ Thời gian lưu liệu Lâu dài Khi chạy chương trình  Cần thiết bị lưu trữ cho liệu kết thúc chương trình, sử dụng nhiều lần kích thước không hạn chế Tập tin & VC BB Tập tin Khái niệm  Tập hợp thông tin (dữ liệu) tổ chức theo dạng với tên xác định  Một dãy byte liên tục (ở góc độ lưu trữ)  Được lưu trữ thiết bị lưu trữ đĩa cứng, USB, thẻ nhớ… • Vẫn tồn chương trình kết thúc • Kích thước lớn (tùy vào thiết bị lưu trữ)  Cho phép đọc liệu (thiết bị nhập) ghi liệu (thiết bị xuất) Tập tin & VC BB Tập tin Phân loại  Theo người sử dụng: quan tâm đến nội dung tập tin nên phân loại theo phần mở rộng  EXE, COM, CPP, DOC, PPT, …  Theo người lập trình: tự tạo stream tường minh để kết nối với tập tin xác định nên phân loại theo cách sử dụng stream C  tập tin kiểu văn (ứng với stream văn bản) tập tin kiểu nhị phân (ứng với stream nhị phân) Tập tin & VC BB Định vị tập tin Đường dẫn  Chỉ đến tập tin không nằm thư mục hành Ví dụ: c:\data\list.txt tập tin list.txt nằm thư mục data ổ đĩa C  Trong chương trình, đường dẫn ghi chuỗi sau: “c:\\data\\list.txt”  Dấu „\‟ biểu thị ký tự điều khiển nên để thể ta phải thêm dấu „\‟ trước Nhưng chương trình yêu cầu nhập đường dẫn từ bàn phím nhập dấu „\‟ Tập tin 13 & VC BB Hàm xuất chuỗi int fputs(const char *str, FILE *fp) Ghi chuỗi ký tự str vào stream fp Nếu fp stdout fputs giống hàm puts, puts ghi ký tự xuống dòng Thành công: trả ký tự cuối ghi Thất bại: trả EOF char s[] = “Ky thuat lap trinh”; FILE* fp = fopen(“taptin.txt”, “wt”); if (fp != NULL) fputs(s, fp); Tập tin 25 & VC BB Hàm xuất trực tiếp int fwrite(void *buf, int size, int count, FILE *fp) Ghi count mẫu tin có kích thước mẫu tin size (byte) từ vùng nhớ buf vào stream fp (theo kiểu nhị phân) Thành công: trả số lượng mẫu tin (không phải số lượng byte) ghi Thất bại: số lượng nhỏ count int a[] = {1, 2, 3}; FILE* fp = fopen(“taptin.dat”, “wb”); if (fp != NULL) fwrite(a, sizeof(int), 3, fp); Tập tin 26 & VC BB Hàm nhập trực tiếp int fread(void *buf, int size, int count, FILE *fp) Đọc count mẫu tin có kích thước mẫu tin size (byte) vào vùng nhớ buf từ stream fp (theo kiểu nhị phân) Thành công: trả số lượng mẫu tin (không phải số lượng byte) thật đọc Thất bại: số lượng nhỏ count kết thúc stream fp gặp lỗi int a[5]; FILE* fp = fopen(“taptin.dat”, “wb”); if (fp != NULL) fread(a, sizeof(int), 3, fp); Tập tin 27 & VC BB Hàm đóng tập tin xác định int fclose(FILE *fp) Đóng stream fp Dữ liệu stream fp “vét” (ghi hết lên đĩa) trước đóng Thành công: trả Thất bại: trả EOF FILE* fp = fopen(“taptin.txt”, “rt”); … fclose(fp); Tập tin 28 & VC BB Hàm đóng tất stream int fcloseall() Đóng tất stream mở ngoại trừ stream chuẩn stdin, stdout, stdprn, stderr, stdaux Nên đóng stream thay đóng tất Thành cơng: trả số lượng stream đóng Thất bại: trả EOF FILE* fp1 = fopen(“taptin1.txt”, “rt”); FILE* fp2 = fopen(“taptin2.txt”, “wt”); … fcloseall(); Tập tin 29 & VC BB Dấu hiệu kết thúc tập tin Khi chưa biết kích thước tập tin  Hằng số EOF (=-1) (chỉ cho tập tin văn bản)  while ((c = fgetc(fp)) != EOF) …  Hàm int feof(FILE *fp) (cho kiểu tập tin)  trả số chưa đến cuối tập tin  trả số khác đến cuối tập tin Tập tin 36 & VC BB Bài tập lý thuyết Bài 1: Sự khác stream kiểu văn stream kiểu nhị phân?  Stream văn tự động chuyển đổi ký tự „\n‟ thành cặp ký tự CR-LF stream nhị phân không thực việc chuyển đổi (xem ký tự nhau) Bài 2: Cần phải làm trước muốn truy xuất tập tin?  Mở tập tin (tạo stream kết nối với tập tin cần mở) hàm fopen Tập tin 40 & VC BB Bài tập lý thuyết Bài 3: Khi mở tập tin fopen, ta cần phải xác định thông tin hàm trả gì?  Cần xác định tên tập tin cần mở mode mở tập tin Hàm trả trỏ đến kiểu FILE, trỏ dùng thay cho tập tin chương trình Bài 4: Ba phương pháp để truy xuất tập tin?  Theo định dạng  Theo ký tự / chuỗi ký tự  Trực tiếp từ nhớ Tập tin 41 & VC BB Bài tập lý thuyết Bài 5: Hai phương pháp để đọc thơng tin từ tập tin gì?  Truy xuất (theo thứ tự)  Truy xuất ngẫu nhiên (tại vị trí bất kỳ) Bài 6: Giá trị EOF?  -1 (định nghĩa STDIO.H) Bài 7: Ta dùng ký hiệu EOF để làm gì?  Được sử dụng với tập tin kiểu văn nhằm xác định dấu hiệu cuối tập tin Tập tin 42 & VC BB Bài tập lý thuyết Bài 8: Cách xác định cuối tập tin kiểu văn kiểu nhị phân?  Sử dụng hàm foef cho hai kiểu tập tin Trong kiểu văn sử dụng EOF Bài 9: Con trỏ vị cách thay đổi nó?  Con trỏ vị đánh dấu vị trí tập tin, nơi diễn thao tác đọc/ghi  Thay đổi vị trí trỏ vị hàm rewind (về đầu tập tin) fseek (về vị trí bất kỳ) Tập tin 43 & VC BB Bài tập lý thuyết Bài 10: Nếu mở tập tin chưa có (bằng mode w), cho biết giá trị trỏ chị vị lúc đầu?  Con trỏ vị đến ký tự tập tin (vị trí 0) Bài 11: Viết lệnh đóng tất stream tập tin  fcloseall(); Bài 12: Trình bày hai cách khác để chuyển trỏ vị đầu tập tin fp  rewind(fp);  fseek(fp, 0, SEEK_SET); Tập tin 44 & VC BB Bài tập lý thuyết Bài 13: Đoạn chương trình sau có sai khơng? void main() { FILE *fp; int c; if ((fp = fopen(“abc.xyz”, “rb”)) == NULL) printf(“Khong mo duoc tap abc.xyz\n”); else { while ((c = fgetc(fp)) != EOF) fprintf(stdout, “%c”, c); fclose(fp); } } Tập tin 45 & VC BB Bài tập thực hành Bài 14: Viết chương trình ghi số nguyên a, b, c nhập từ bàn phím vào tập tin Bài 15: Viết chương trình đọc số nguyên a, b, c từ tập tin, sau giải phương trình ax2+ bx + c = ghi kết vào tập tin khác Bài 16: Viết chương trình đọc n số nguyên từ tập tin cho trước, sau xếp tăng dần ghi kết vào tập tin khác Ví dụ:   Tập tin 46 & VC BB Bài tập thực hành Bài 17: Viết chương trình ghi dịng văn nhập từ bàn phím lên tập tin Bài 18: Viết chương trình in nội dung tập tin lên hình Bài 19: Viết chương trình đếm số ký tự chữ tập tin xuất kết tập tin khác Bài 20: Viết chương trình đếm số từ tập tin xuất kết tập tin khác Bài 21: Viết chương trình đếm số lần lặp lại từ tập tin Tập tin 47 & VC BB Bài tập thực hành Bài 22: Viết chương trình mở tập tin văn có đĩa, chép thành tập tin văn với điều kiện chữ thường đổi thành chữ hoa, tất ký tự khác khơng đổi Bài 23: Viết chương trình ghép tập tin văn bản, nội dung tập tin thứ hai ghép sau tập tin thứ Bài 24: Viết sao chép tập tin cho trước Bài 25: Viết chương trình ghi danh sách cấu trúc xuống tập tin sau đọc lên kiểm tra lại Tập tin 48 ... lý tập tin 2 Sử dụng tập tin (sau mở tập tin)  Đọc liệu từ tập tin đưa vào chương trình  Ghi liệu từ chương trình lên tập tin 3 Đóng tập tin (sau sử dụng xong) Tập tin 14 & VC BB Hàm mở tập. .. mở tập tin (mode) VC BB Đối số Ý nghĩa b Mở tập tin kiểu nhị phân (binary) t Mở tập tin kiểu văn (text) (mặc định) r Mở tập tin để đọc liệu từ tập tin Trả NULL khơng tìm thấy tập tin w Mở tập tin. .. Viết chương trình đếm số từ tập tin xuất kết tập tin khác Bài 21: Viết chương trình đếm số lần lặp lại từ tập tin Tập tin 47 & VC BB Bài tập thực hành Bài 22: Viết chương trình mở tập tin văn có

Ngày đăng: 22/09/2022, 16:30

Hình ảnh liên quan

 Xuất ra màn hình: fprintf(stdout, “Hello”); - KỸ THUẬT lập TRÌNH tập TIN

u.

ất ra màn hình: fprintf(stdout, “Hello”); Xem tại trang 6 của tài liệu.
filename với kiểu mở mode (xem bảng). Thànhcông: con trỏkiểucấutrúc  FILE  Thấtbại: NULL  (sai  quy tắcđặttên tập tin,  khôngtìmthấyổđĩa, khôngtìmthấy thưmục, mởtập tin chưacóđểđọc, …)  FILE* fp = fopen (“taptin.txt”,“rt”);  - KỸ THUẬT lập TRÌNH tập TIN

filename.

với kiểu mở mode (xem bảng). Thànhcông: con trỏkiểucấutrúc FILE Thấtbại: NULL (sai quy tắcđặttên tập tin, khôngtìmthấyổđĩa, khôngtìmthấy thưmục, mởtập tin chưacóđểđọc, …) FILE* fp = fopen (“taptin.txt”,“rt”); Xem tại trang 12 của tài liệu.
lên màn hình. - KỸ THUẬT lập TRÌNH tập TIN

l.

ên màn hình Xem tại trang 33 của tài liệu.

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan