1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Kỹ thuật lập trình Dữ liệu dạng tệp tin (File) GV. Hà Đại Dương

19 284 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

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 508,55 KB

Nội dung

Bài giảng này trình bày một số khái niệm cơ bản về tệp tin (File), thư mục (Folder)..., các thao tác với File (như thao tác MởĐóng, di chuyển con trỏ...), cách ĐọcGhi File văn bản và ĐọcGhi File nhị phân,... Mời các bạn cùng tham khảo để tìm hiểu rõ hơn về nội dung chi tiết.

Trang 1

Tuần 7 - Dữ liệu dạng tệp tin

(File)

Giáo viên: Hà Đại Dương

duonghd@mta.edu.vn

Kỹ thuật lập trình

Đã học

• Dữ liệu: vào, ra cho chương trình

– Kiểu: Nguyên, Thực; Tổ chức: Mảng, Con trỏ, Xâu…

– Nhập: Từ bàn phím;

– Ra: màn hình.

• Vấn đề: Giả sử cần quản lý điểm của SV 1 lớp

có 100 SV, theo như trên:

– Mỗi lần cần: Nhập từ bàn phím 100 SV: Họ tên …?

Nhập 1 lần lưu vào MT để sử

dụng cho các lần sau

Lưu dữ liệu trên máy tính

• Ví dụ: Danh sách sinh viên

• Lưu trữ ở đâu?

Trang 2

Nội dung

1 Một số khái niệm cơ bản

– Tệp tin (File)

– Thư mục (Folder) …

2 Các thao tác với File

– Di chuyển con trỏ …

3 Đọc/Ghi File văn bản

4 Đọc/Ghi File nhị phân

Một số khái niệm cơ bản

Thư mục

• Là cách tổ chức nơi lưu trữ dữ liệu trên ổ đĩa

máy tính

• Đặc trưng bởi: Vị trí và tên

• Ví dụ

Trang 3

Cây thư mục

Tệp tin (File)

• Đối tượng chứa dữ liệu (hoặc chương trình

máy tính)

• Phân loại:

– File dữ liệu, File chương trình

– File văn bản, File ảnh, File âm thanh …

– File text, File nhị phân

• Thể hiện bởi:

– Vị trí của nó (ổ đĩa nào, thư mục gì? …)

– Tên và phần mở rộng.

Tệp tin (File) …

Trang 4

Đường dẫn (Path)

• Xâu ký tự chỉ ra vị trí của File

• Bắt đầu bằng tên ổ đĩa

• Tiếp đến là (tên) thư mục cha (nếu có) rồi đến

(tên) thư mục con và tiếp tục

• Ví dụ: Đường dẫn đến thư mục KTLT trên ổ đĩa

D:

D:\GiangDay\20162017K1\KTLT

Dữ liệu dạng tệp tin

• Dữ liệu cho các chương trình trên máy tính

chủ yếu dưới dạng tệp tin - Tệp tin dữ liệu (tệp

dữ liệu), hay file dữ liệu

• File dữ liệu xét về cách lưu trữ có 2 dạng:

Text file(file văn bản - khác với document) và

Binary file(file nhị phân)

Text file (File văn bản)

Trang 5

Text file là gì?

• Text file là một dạng file dữ liệu mà nội dung

của nó được lưu trữ thành từng dòng, có thể

“đọc” được bằng những công cụ “thông

thường”

A text file (sometimes spelled "textfile": an

old alternative name is "flatfile") is a kind

of computer file that is structured as a

(https://en.wikipedia.org/wiki/Text_file)

Ví dụ

• File dulieuvao.txt và nội dung của nó

Làm việc với text file

1 Khai báo biến (kiểu FILE)

2 Mở/Đóng file

3 Một số thao tác khác

– Di chuyển vị trí con trỏ dữ liệu

– Lấy vị trí con trỏ dữ liệu

– Kiểm tra dấu hiệu kết thúc file

4 Đọc/Ghi dữ liệu từ file

Trang 6

Khai báo biến file

• Kiểu dữ liệu: FILE

• Khai báo dạng con trỏ

FILE*f 1, f2, …;

– FILE: Kiểu dữ liệu

– f: con trỏ kiểu FILE dùng để truy xuất dữ liệu (từ

file).

• Ví dụ:

FILE f;

Mở file - Hàm fopen()

• Biến f sau khi được khai báo có thể dùng để

truy xuất (đọc/ghi) dữ liệu trên 1 file nào đó

thông qua thao tác mở file

• Hàm fopen()

– Cú pháp: FILE *fopen(char *P, const char *M)

– Trả về: con trỏ file (FILE *)

– P: đường dẫn và tên file cần mở

– M: phương thức (cách thức) mở file

Mở file - Hàm fopen()

Cú pháp: FILE *fopen(char *P, const char *M)

• M: phương thức (cách thức) mở file

"r“: Opens for reading If the file does not exist or

cannot be found, the fopen call fails.

"w“: Opens an empty file for writing If the given

file exists, its contents are destroyed.

"a“: Opens for writing at the end of the file

(appending) without removing the EOF marker

before writing new data to the file; creates the file

first if it doesn’t exist.

Trang 7

Mở file - Hàm fopen()

Cú pháp: FILE *fopen(char *P, const char *M)

• M: phương thức (cách thức) mở file

"r+“: Opens for both reading and writing (The file

must exist.)

"w+“: Opens an empty file for both reading and

writing If the given file exists, its contents are

destroyed.

"a+“: Opens for reading and appending;

( https://msdn.microsoft.com/enus/library/aa246392(v=vs.60).aspx )

Mở file - Hàm fopen()

Cú pháp: FILE *fopen(char *P, const char *M)

• M: phương thức (cách thức) mở file

– Sau các giá trị trên có thể thêm vào ký tự

• t: chỉ rõ file cần mở là text file;

b: chỉ rõ file cần mở là binary file ;

( https://msdn.microsoft.com/enus/library/aa246392(v=vs.60).aspx )

Mở file - Hàm fopen()

– Cú pháp: FILE *fopen(char *P, const char *M)

• Ví dụ:

f=fopen(“D:\\GiangDay\\20162017K1\\KTLT\\ref\\

dulieuvao.txt ”,” w+ ”);

Diễn giải chính xác nội dung câu lệnh trên

Trang 8

Đóng file

• Đóng một file

– Hàm: int fclose(FILE *f)

• Đóng tất cả các file đang mở

– Hàm: int fcloseall()

Con trỏ dữ liệu

• Con trỏ dữ liệu (con trỏ): Cho phép xác định vị

trí (địa chỉ) mà các tác động đọc/ghi thực hiện

trên file

• Sau khi mở (fopen) con trỏ dữ liệu ở đầu file

• Các thao tác đọc/ghi sẽ làm dịch chuyển con

trỏ dữ liệu đi một khoảng bằng kích thước của

khối dữ liệu đã đọc/ghi

Một số thao tác khác

• Kiểm tra dấu hiệu kết thúc file

– Hàm: int feof(FILE *f)

• Lấy vị trí con trỏ dữ liệu (hiện thời)

– Hàm: long ftell(FILE *f)

• Di chuyển con trỏ dữ liệu về đầu file

– Hàm:void rewind(FILE *f)

Trang 9

Một số thao tác khác …

• Di chuyển con trỏ dữ liệu về vị trí bất kỳ

– Hàm: int fseek(FILE *f, long offset, int whence)

– Trong đó

• offset: số byte cần dịch chuyển con trỏ dữ liệu liệu tính

từ vị trí whence.

• whence:

– SEEK_SET (0): Vị trí làm mốc để tính là đầu tệp tin

– SEEK_CUR (1): Vị trí làm mốc để tính là vị trí hiện thời

– SEEK_END (2): Vị trí làm mốc để tính là cuối tệp tin

Ghi dữ liệu vào file

• Ghi 1 ký tự

– Hàm: int fputc(int c, FILE *f)

• Ghi 1 xâu ký tự

– Hàm: int fputs(const char *buffer, FILE *f)

– Hàm: fprintf(FILE *f, const char *format,

varexpr)

Ví dụ 1

Trang 10

Đọc dữ liệu từ file

• Đọc 1 ký tự

– Hàm: int fgetc(FILE *f)

• Đọc 1 xâu ký tự

– Hàm:char *fgets(char *buffer, int n, FILE *f)

– Hàm: fscanf(FILE *f, const char *format,

varlist)

Ví dụ 2

Ví dụ 3

• Soạn thảo 1 file text bằng công cụ notepad với

nội dung sau:

– dòng đầu ghi: m n

– m dòng tiếp theo: mỗi dòng ghi n giá trị của ma

trận A(m,n)

• Ví dụ: Mô tả ma trận:

3x3 và dữ liệu trên

file text

Trang 11

Ví dụ 3 …

Ghi file dữ liệu trên vào file: d:\input.dat

• Viết chương trình cho phép đọc ma trận từ

file d:\input.dat và in ma trận đọc được lên

màn hình

• Chương trình

Ví dụ 3 …

• Kết quả

Trang 12

Ví dụ 4

• Cho text file (d:\input2.dat) nội dung sau:

– dòng đầu ghi: m n

– m dòng tiếp theo: ghi n giá trị của ma trận A(m,n)

– Dòng tiếp theo ghi: p q

– q dòng tiếp theo: ghi p giá trị của ma trận B(p,q)

• Viết chương trình (15 phút) cho phép:

– Đọc vào ma trận A, B từ file d:\input2.dat

– Ghi kết quả là ma trận tổng B = A + B ra text file

d:\output2.dat

Binary file (File nhị phân)

Binary file là gì?

• File nhị phân: File dữ liệu trên máy tính được

lưu trữ dưới dạng các mã nhị phân (cách gọi

này nhằm phân biệt với text file)

A binary file is a computer file that is not

a text file The term "binary file" is often used

as a term meaning "non-text file" Text file

itself is a binary file and all computer files are

binary file

(https://en.wikipedia.org/wiki/Binary_file)

Trang 13

Ví dụ

• Dữ liệu trên file nhị phân có thể nhìn như sau:

Làm việc với binary file

1 Khai báo biến (kiểu FILE): TT text file

2 Mở/Đóng file: TT text file

3 Một số thao tác khác: TT text file

– Di chuyển vị trí con trỏ dữ liệu

– Lấy vị trí con trỏ dữ liệu

– Kiểm tra dấu hiệu kết thúc file

4 Đọc/Ghi dữ liệu từ file: Sử dụng các hàm

khác với text file

Khai báo biến file

• Kiểu dữ liệu: FILE

• Khai báo dạng con trỏ

FILE*f 1, f2, …;

– FILE: Kiểu dữ liệu

– f: con trỏ kiểu FILE dùng để truy xuất dữ liệu (từ

file).

• Ví dụ:

Trang 14

Mở file - Hàm fopen()

Cú pháp: FILE *fopen(char *P, const char *M)

• M: phương thức (cách thức) mở file

– Sau các giá trị trên có thể thêm vào ký tự

• t: chỉ rõ file cần mở là text file;

b: chỉ rõ file cần mở là binary file ;

( https://msdn.microsoft.com/enus/library/aa246392(v=vs.60).aspx )

Đóng file

• Đóng một file

– Hàm: int fclose(FILE *f)

• Đóng tất cả các file đang mở

– Hàm: int fcloseall()

Ghi dữ liệu vào file nhị phân

• Hàm fwrite()

Cú pháp: fwrite(const void *p, size_t s, size_t n,

FILE *f);

– Trong đó:

•p: Con trỏ đến vùng dữ liệu cần ghi

•s: kích thước mỗi phần tử

•n: số phần tử ghi vào file

•f: con trỏ file cần ghi

Trang 15

Ví dụ 5

• Ghi các thông số sau đây:

15, 10, 2016, 31.5

16, 10, 2016, 33.8

Vào file d:\nhietdongay.dat

Ví dụ 5

• Nội dung file d:\nhietdongay.dat mở trong VS

như sau:

Trang 16

Đọc dữ liệu từ file nhị phân

• Hàm fread()

Cú pháp: fread(const void *p, size_t s, size_t n,

FILE *f);

– Trong đó:

•p: Con trỏ quản lý dữ liệu đọc được

•s: kích thước mỗi phần tử

•n: số phần tử đọc từ file

•f: con trỏ file cần đọc

Ví dụ 6

• Đọc dữ liệu từ file d:\nhietdongay.dat (đã biết

cách lưu trữ)

– 3 số nguyên, 1 số float

– 3 số nguyên, 1 số float

Ví dụ 6

Trang 17

Ví dụ 6

• Nội dung file d:\nhietdongay.dat

15, 10, 2016, 31.5

16, 10, 2016, 33.8

Ví dụ 7

• Viết chương trình cho phép nhập vào danh

sách bao gồm họ tên sinh viên và điểm trung

bình tốt nghiệp từ bàn phím, hãy ghi danh

sách đó vào tệp tin d:\sinhvien.dat dạng nhị

phân

• Viết chương trình (15 phút)

Lưu ý

• Có thể xem và đọc được nội dung text file bất

kỳ

• Với file nhị phân để đọc được nội dung cần

biết cách lưu trữ dữ liệu của nó

Trang 18

Bài tập

Bài tập

1 Giả sử text file D:\SinhvienHT.dat chứa danh

sách họ tên SV, tên mỗi sinh viên được viết

trên 1 dòng Viết chương trình đọc file

D:\Sinhvien.dat chuẩn hoá tên SV và ghi danh

sách tên SV đã chuẩn hoá ra file

D:\SinhvienCH.dat

Bài tập

2 Sửa lại chương trình trong ví dụ 7 để có thể

xem được danh sách sinh viên đã có trong

tệp d:\sinhvien.dat, có thể thêm nhập thêm

sinh viên vào danh sách đó

Trang 19

Bài tập về nhà

1 Tìm hiểu một số khái niệm liên quan đến việc

tổ chức lưu trữ dữ liệu trên máy tính

– FAT32

– NTFS

– Thư mục (Folder, Directory)

– Tệp tin(File)

– Đường dẫn (Path)

Bài tập về nhà …

2 Trình bày chi tiết hai khái niệm: Text file và

Plain text

3 Xem lại và thử nghiệm tất cả các hàm liên

quan đến file trong C/C++

Ngày đăng: 16/05/2017, 16:13

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w