1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Kiểu dữ liệu cấu trúc, file (lập TRÌNH cơ bản SLIDE)

38 58 0

Đ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

Chương 12 Kiểu liệu cấu trúc, file Học phần: LẬP TRÌNH CƠ BẢN Tài liệu tham khảo  Kỹ thuật lập trình C: sở nâng cao, Phạm Văn Ất, Nhà xuất KHKT – Chương  Kỹ thuật lập trình C: sở nâng cao, Phạm Văn Ất, Nhà xuất KHKT – Chương 10  The C programming language 2nd Edition, Brian Kernighan and Dennis Ritchie, Prentice Hall Software Series – Chương Cấu trúc liệu Nội dung  Khái niệm kiểu liệu có cấu trúc  Khai báo biến kiểu cấu trúc  Khởi tạo biến cấu trúc  Sử dụng biến cấu trúc  Sử dụng mảng cấu trúc  Khái niệm file  Các thao tác với file Cấu trúc liệu Khái niệm cấu trúc  Một cấu trúc bao gồm mẫu liệu (khơng thiết kiểu) nhóm lại với Biến I I L L U S I O N B A C H L L U Tên sách Tác giả Lần S xuất I O N Mảng Cấu trúc liệu Khái niệm cấu trúc (tiếp)  Việc định nghĩa cấu trúc tạo kiểu liệu cho phép người dùng sử dụng chúng để khai báo biến kiểu cấu trúc  Các biến cấu trúc gọi phần tử cấu trúc hay thành phần cấu trúc  Ví dụ: struct cat { char bk_name [25]; char author [20]; int edn; float price; }; Cấu trúc liệu Khai báo biến cấu trúc  Khi cấu trúc định nghĩa, khai báo nhiều biến sử dụng kiểu  Ví dụ: struct cat books1;  Câu lệnh dành đủ vùng nhớ để lưu trữ tất mục cấu trúc struct cat { char bk_name[25]; char author[20]; int edn; float price; } books1, books2; struct cat books1, books2; struct cat books1; struct cat books2; Cấu trúc liệu Khởi tạo cấu trúc  Giống biến khác mảng, biến kiểu cấu trúc khởi tạo thời điểm khai báo struct employee { int no; char name [20]; };  Các biến emp1 emp2 có kiểu employee khai báo khởi tạo sau: struct employee emp1 = {346, “Abraham”}; struct employee emp2 = {347, “John”}; Cấu trúc liệu Truy cập phần tử cấu trúc  Các phần tử cấu trúc truy cập thông qua việc sử dụng toán tử chấm (.), toán tử cịn gọi tốn tử thành viên - membership  Cú pháp: structure_name.element_name  Ví dụ: scanf(“%s”, books1.bk_name); Cấu trúc liệu Gán sử dụng cấu trúc  Có thể sử dụng câu lệnh gán đơn giản để gán giá trị biến cấu trúc cho biến khác có kiểu  Chẳng hạn, books1 books2 biến cấu trúc có kiểu, câu lệnh sau hợp lệ books2 = books1; Cấu trúc liệu Sao chép cấu trúc  Do kiểu liệu cấu trúc phức tạp nên số trường hợp dùng câu lệnh gán trực tiếp, sử dụng hàm memcpy(), hàm có sẵn thư viện lập trình  Cú pháp: memcpy (char * destn, char &source, int nbytes);  Ví dụ: memcpy (&books2, &books1, sizeof(struct cat)); 10 Cấu trúc liệu Một số thao tác khác tệp tin (tiếp) Kiểm tra đến cuối tệp tin Cú pháp: int feof(FILE *f) Ý nghĩa: Kiểm tra xem chạm tới cuối tệp tin hay chưa trả EOF cuối tệp tin chạm tới, ngược lại trả Di chuyển trỏ tệp tin đầu tệp tin - Hàm rewind() Khi ta thao tác tệp tin mở, trỏ tệp tin di chuyển phía cuối tệp tin Muốn cho trỏ quay đầu tệp tin mở nó, ta sử dụng hàm rewind() Cú 24 pháp: void rewind(FILE *f) Làm việc với tệp Truy cập tệp văn Ghi liệu ký tự lên tệp tin văn  Hàm putc() Hàm dùng để ghi ký tự lên tệp tin văn mở để làm việc Cú  pháp: int putc(int c, FILE *f) tham số c chứa mã Ascii ký tự Mã ghi lên tệp tin liên kết với trỏ f Hàm trả EOF gặp lỗi  Hàm fputs() Hàm dùng để ghi chuỗi ký tự chứa vùng đệm lên tệp tin văn Cú  pháp: int puts(const char *buffer, FILE *f) buffer trỏ có kiểu char đến vị trí chuỗi ký tự ghi vào Hàm trả giá trị buffer chứa chuỗi rỗng trả EOF gặp lỗi 25 Làm việc với tệp Ghi liệu vào tệp văn  Hàm fprintf() Hàm dùng để ghi liệu có định dạng lên tệp tin văn Cú pháp: fprintf(FILE *f, const char *format, varexpr)  format: chuỗi định dạng (giống với định dạng hàm printf()), varexpr: danh sách biểu thức, biểu thức cách dấu phẩy (,) Định dạng Ý nghĩa %d Ghi số nguyên %[.số chữ số thập phân] f Ghi số thực có theo quy tắc làm tròn số %o Ghi số nguyên hệ bát phân %x Ghi số nguyên hệ thập lục phân %c Ghi ký tự %s Ghi chuỗi ký tự %e %E %g 26 %G Ghi số thực dạng khoa học (nhân 10 mũ x) Làm việc với tệp Đọc liệu từ tệp văn Đọc liệu từ tệp tin văn  Hàm getc()  Hàm dùng để đọc liệu ký tự từ tệp tin văn mở để làm việc  Cú pháp: int getc(FILE *f)  Hàm trả mã Ascii ký tự (kể EOF) tệp tin liên kết với trỏ f 27 Làm việc với tệp Đọc liệu từ tệp văn Hàm fgets()  Cú pháp: char *fgets(char *buffer, int n, FILE *f)  Hàm dùng để đọc chuỗi ký tự từ tệp tin văn mở liên kết với trỏ f đọc đủ n ký tự gặp ký tự xuống dòng ‘\n’ hay gặp ký tự kết thúc EOF (ký tự không đưa vào chuỗi kết quả)  Trong đó:  buffer (vùng đệm): trỏ có kiểu char đến nhớ đủ lớn chứa ký tự nhận  n: giá trị nguyên độ dài lớn chuỗi ký tự nhận  f: trỏ liên kết với tệp tin  Ký tự NULL (‘\0’) tự động thêm vào cuối chuỗi kết lưu vùng đệm  28 Hàm trả địa vùng đệm không gặp lỗi chưa gặp ký tự với tệp kết thúc EOF Ngược lại, hàm trả vềLàm giáviệc trị NULL Đọc liệu từ tệp văn (tiếp)  Hàm fscanf() Hàm dùng để đọc liệu từ tệp tin văn vào danh sách biến theo định dạng Cú pháp: fscanf(FILE *f, const char *format, varlist) Trong đó: format: chuỗi định dạng (giống hàm scanf()); varlist: danh sách biến biến cách dấu phẩy (,) Ví dụ: Viết chương trình chép tệp tin D:\Baihat.txt sang tệp tin D:\Baica.txt #include #include int main() { FILE *f1,*f2; clrscr(); f1=fopen("D:\\Baihat.txt","rt"); f2=fopen("D:\\Baica.txt","wt"); 29 if (f1!=NULL && f2!=NULL) { int ch=fgetc(f1); while (! feof(f1)) { fputc(ch,f2); ch=fgetc(f1); } fcloseall(); } getch(); return 0; } Làm việc với tệp Ví dụ: Viết chương trình ghi chuỗi ký tự lên tệp tin văn D:\\Baihat.txt #include #include int main() { FILE *f; clrscr(); f=fopen("D:\\Baihat.txt","r+"); if (f!=NULL) { fputs("Em oi Ha Noi pho.\n",f); fputs("Ta em, mui hoang lan; ta em, mui hoa sua.",f); fclose(f); } getch(); return 0; } 30 Làm việc với tệp Làm việc với tệp nhị phân  Ghi liệu lên tệp tin nhị phân - Hàm fwrite()  Cú pháp: size_t fwrite(const void *ptr, size_t size, size_t n, FILE *f)  ptr: trỏ đến vùng nhớ chứa thông tin cần ghi lên tệp tin  n: số phần tử ghi lên tệp tin  size: kích thước phần tử  f: trỏ tệp tin mở  Giá trị trả hàm số phần tử ghi lên tệp tin Giá trị n trừ xuất lỗi 31 Làm việc với tệp Đọc liệu từ tệp nhị phân  Hàm fread()  Cú pháp: size_t fread(const void *ptr, size_t size, size_t n, FILE *f)  ptr: trỏ đến vùng nhớ nhận liệu từ tệp tin  n: số phần tử đọc từ tệp tin  size: kích thước phần tử  f: trỏ tệp tin mở  Giá trị trả hàm số phần tử đọc từ tệp tin Giá trị n hay nhỏ n chạm đến cuối tệp tin có lỗi xuất 32 Làm việc với tệp Con trỏ tệp nhị phân Di chuyển trỏ tệp tin - Hàm fseek()     33 Việc ghi hay đọc liệu từ tệp tin làm cho trỏ tệp tin dịch chuyển số byte, kích thước kiểu liệu phần tử tệp tin Khi đóng tệp tin mở lại nó, trỏ ln vị trí đầu tệp tin Nhưng ta sử dụng kiểu mở tệp tin “a” để ghi nối liệu, trỏ tệp tin di chuyển đến vị trí cuối tệp tin Ta điều khiển việc di chuyển trỏ tệp tin đến vị trí định hàm fseek() Cú pháp: int fseek(FILE *f, long offset, int whence)  f: trỏ tệp tin thao tác  offset: số byte cần dịch chuyển trỏ tệp tin kể từ vị trí trước Phần tử vị trí  whence: vị trí bắt đầu để tính offset, ta chọn điểm xuất phát là: SEEK_SET Vị trí đầu tệp tin SEEK_CUR Vị trí trỏ tệp tin SEEK_END Vị trí cuối tệp tin  Kết trả hàm việc di chuyển thành công Nếu không thành công, giá trị khác (đó mã lỗi) trả Làm việc với tệp Ví dụ: Viết chương trình ghi lên tệp tin CacSo.dat giá trị số (thực, nguyên, nguyên dài) Sau đọc số từ tệp tin vừa ghi hiển thị lên hình #include #include int main() { FILE *f; clrscr(); f=fopen("D:\\CacSo.txt","wb"); if (f!=NULL) { double d=3.14; int i=101; long l=54321; 34 fwrite(&d,sizeof(double),1,f); fwrite(&i,sizeof(int),1,f); fwrite(&l,sizeof(long),1,f); /* Doc tu tap tin*/ rewind(f); fread(&d,sizeof(double),1,f); fread(&i,sizeof(int),1,f); fread(&l,sizeof(long),1,f); printf("Cac ket qua la: %f %d %ld",d,i,l); fclose(f); } getch(); return 0; } Làm việc với tệp Tóm tắt nội dung  Khái niệm cấu trúc liệu  Định nghĩa cấu trúc  Sử dụng cấu trúc  Khái niệm tệp tin  Khai báo, phân loại tệp  Truy cập tệp tin 35 Cấu trúc liệu Thảo luận  Sử dụng mảng cấu trúc  Tìm hiểu cách truyền tham số kiểu cấu trúc  Các file văn file nhị phân  Con trỏ đến vị trí hành file  Vấn đề cần đóng file sau làm việc xong 36 Cấu trúc liệu CÂU HỎI VÀ BÀI TẬP Bài 1: Viết chương trình quản lý tệp tin văn theo yêu cầu: A Nhập từ bàn phím nội dung văn sau ghi vào đĩa B Đọc từ đĩa nội dung văn vừa nhập in lên hình C Đọc từ đĩa nội dung văn vừa nhập, in nội dung lên hình cho phép nối thêm thông tin vào cuối tệp tin Bài 2: Viết chương trình cho phép thống kê số lần xuất ký tự chữ (‘A’ ’Z’,’a’ ’z’) tệp tin văn Bài 3: Viết chương trình đếm số từ số dịng tệp tin văn Bài 4: Mỗi sinh viên cần quản lý thơng tin: mã sinh viên họ tên Viết chương trình cho phép lựa chọn chức năng: nhập danh sách sinh viên từ bàn phím ghi lên tệp tin SinhVien.dat, đọc liệu từ tệp tin SinhVien.dat hiển thị danh sách lên hình, tìm kiếm họ tên sinh viên dựa vào mã sinh viên nhập từ bàn phím 37 Làm việc với tệp HỎI VÀ ĐÁP Cấu trúc liệu ... – Chương Cấu trúc liệu Nội dung  Khái niệm kiểu liệu có cấu trúc  Khai báo biến kiểu cấu trúc  Khởi tạo biến cấu trúc  Sử dụng biến cấu trúc  Sử dụng mảng cấu trúc  Khái niệm file  Các... với file Cấu trúc liệu Khái niệm cấu trúc  Một cấu trúc bao gồm mẫu liệu (không thiết kiểu) nhóm lại với Biến I I L L U S I O N B A C H L L U Tên sách Tác giả Lần S xuất I O N Mảng Cấu trúc liệu. .. Khái niệm cấu trúc (tiếp)  Việc định nghĩa cấu trúc tạo kiểu liệu cho phép người dùng sử dụng chúng để khai báo biến kiểu cấu trúc  Các biến cấu trúc gọi phần tử cấu trúc hay thành phần cấu trúc

Ngày đăng: 29/03/2021, 10:45

Xem thêm:

TỪ KHÓA LIÊN QUAN

Mục lục

    Chương 12 Kiểu dữ liệu cấu trúc, file

    Tài liệu tham khảo

    Khởi tạo cấu trúc

    Khái niệm tệp tin

    Phân loại tệp tin

    Ví dụ: tệp tin kiểu Text

    Sử dụng biến loại tệp tin

    Thao tác trên tệp tin

    Một số thao tác khác tệp tin

    Một số thao tác khác tệp tin (tiếp)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w