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

Bài giảng Kỹ thuật lập trình: Chương 6 - Nguyễn Văn Huy

24 68 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 24
Dung lượng 895,1 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Kỹ thuât lập trình - Chương 6: Tệp tin cung cấp cho người học các kiến thức: Dẫn nhập, khai báo kiểu tệp tin, các thao tác truy xuất tệp tin, các hàm tệp tin. Mời các bạn cùng tham khảo nội dung chi tiết.

Trang 1

Tệp Tin

Trang 4

Trong C++, để làm việc với các hàm xử lý file cần khai báo đầu

chương trình: #include <fstream>

Trong thư viện fstream thì ta có 3 loại File stream cơ bản sau :

 ifstream : Dùng cho file nhập vào Loại này chỉ có thể được

dùng để đọc dữ liệu từ file vào bộ nhớ mà thôi.

 ofstream : Dùng cho file xuất ra Loại này thì có thể dùng để

tạo ra files và chép dữ liệu vào chúng.

 fstream : Đây là kênh file.(File stream) Loại này thì có thể

vừa tạo file, vừa ghi dữ liệu vào file và đọc dữ dữ liệu từ file

vào luôn.

Trang 5

 Để định nghĩa một đối tương file ta chọn các cách sau:

 Nếu sử dụng thư viện stdio.h trong C thì để định nghĩa một

đối tượng file ta sử dụng biến con trỏ như sau:

Trong đó DataFile là tên do người dùng đặt theo quy tắc định

Trang 6

FileDemo.open( "ViDu.txt"); //Tạo và mở file với tên ViDu.txt

FileDemo << "Vi du ve ghi du lieu vao file\n";

// Sử dụng toán tử << để xuất dữ liệu trong cặp ngoặc"" ra file ViDu.txt

FileDemo.close(); //Đóng đối tượng file

cout<< "File ViDu.txt da duoc ghi thanh cong\n";

Trang 7

Ví dụ 2: Tạo và ghi dữ liệu vào file trong ổ đĩa hoặc thư mục.

fstream ViDu2("D://Demo1.txt",ios::out);

/*Định nghĩa đối tượng file ViDu2 đồng thời tạo và mở file

Demo1.txt tại một đường dẫn (ở đây là ổ D)*/

for(int i=0; i<100; i+=2)

ViDu2 << i<<"\n"; //Ghi các số chẵn <100 vào file Demo1.txt

ViDu2.close(); //Đóng đối tượng file

}

Trang 8

ios::out - Mở file ở chế độ xuất ra, chế độ này cho phép

ghi dữ liệu vào file.

ios::in - Mở file ở chế độ nhập vào, tức là cho phép dữ liệu được đọc từ file.

ios::app - Chế độ gắn vào Nếu file đã được tạo thì nội

dung của nó sẽ được thêm vào cuối của file Nếu file chưa được tạo nó sẽ tạo ra 1 file mới.

Trang 9

Chú ý (tiếp):

ios::ate - Nếu file đã được tạo, thì chương trình sẽ chuyển con trỏ về cuối file.

ios::binary - Chế độ nhị phân Khi mà file được mở ra ở

chế độ này thì dữ liệu sẽ được đọc hay ghi từ 1 định dạng nguyên thủy nhị phân.

ios::trunc - Nếu file đã được tạo thì nội dung của nó sẽ bị

xóa đi.

ios::nocreate - Không làm gì nếu file chưa có.

ios::replace - Không làm gì nếu file đã có.

Để kết hợp các chế độ ta dung toán tử |.

Khi dùng riêng lẻ thì ios::out sẽ xóa nội dung của file nếu file

đã được tạo sẵn Tuy nhiên nếu dùng chung với ios::in, thì nội

dung file cũ sẽ được giữ lại

Trang 10

Ví dụ 3: Đọc dữ liệu từ file dùng toán tử >>

Trang 11

Ví dụ 4: Đọc dữ liệu từ file dùng hàm getline

Trang 12

B Sử dụng #include<stdio.h>

Đầu tiên khai báo con trỏ FILE *f;

Mở file: f = fopen(“path”,”chế độ mở”);

path - Đường dẫn của file;

Chế độ mở - Xem ở trang 14 của slide;

Đọc dữ liệu từ file :

 fscanf(f, “%d”, &x); /*Đọc dữ liệu dạng số nguyên từ file

cho vào biến x */

 char s[80]; fgets(s, 80, f); /*Đưa vào chuỗi s tối đa 80 kí tự lấy từ file */

 char c=getc(f); //Đọc 1 kí tự từ file lưu vào biến c

Ghi dữ liệu vào file:

 fprintf(f,“%d”,x); // Xuất giá trị nguyên x ra file

Trang 13

FILE *data; // khai báo con trỏ data dạng FILE

data = fopen("vdc.txt","w"); //w là chế độ xử lý file //Mở file vdc.txt để ghi dữ liệu lên đó ( w – ý nghĩa là mở để ghi)

fprintf(data, "Day la vi du ve ghi du lieu len file");

//Hàm fprintf dùng để ghi dữ liệu vào file

fclose(data); // Đóng file

}

Trang 14

Các chế độ xử lý file:

 "r" - Mở một file có sẵn để đọc.

 "w" - Tạo file mới để ghi, nếu file có sẵn thì sẽ bị ghi mới

hoàn toàn.

 "a" - Mở một file để ghi từ vị trí cuối cùng của file, nếu file

không tồn tại sẽ tạo mới.

 "r+" - Mở một file có sẵn để đọc và ghi.

 "w+" - Tạo file mới để đọc và ghi, nếu file có sẵn thì sẽ bị ghi

mới hoàn toàn.

 "a+" - Mở một file để để đọc và ghi Có thể đọc từ đầu file,

nhưng khi ghi thì ghi từ vị trí cuối cùng của file, nếu file không tồn tại sẽ tạo mới.

Trang 15

char dulieu[ 1000 ]; // dùng để chứa nội dung file

data = fopen("vdc.txt","r"); //mở file vdc.txt ở chế độ để đọc

Trang 16

cout <<data;

Trang 17

B Hàm put() - Ghi một kí tự vào file.

Ví dụ sau sẽ ghi nội dung 1 câu văn vào file Vidu.txt

fstream dataFile("Vidu.txt", ios :: out );

cout << "Nhap noi dung muon ghi va ket thuc bang dau cham :\n";

cin.get( ch );

while ( ch != ' ' ) { dataFile.put(ch); cin.get(ch); }

dataFile.put(ch); //Ghi dấu chấm cuối câu.

dataFile.close();

}

Trang 18

C Hàm write() - Ghi file ở dạng nhị phân.

Cách dùng như sau:

fileObject - Đối tượng file.

address – Địa chỉ đầu tiên của 1 vùng nhớ được ghi vào file.

size – Số lượng byte của vùng nhớ mà nó sẽ được ghi.

Ví dụ 1:

Ví dụ 2:

fileObject.write(address, size);

char kitu = 'A';

file.write(&kitu, sizeof(kitu));

char Data[] = {'A', 'B', 'C', 'D'};

file.write(Data, sizeof(Data));

Trang 19

D Hàm read() - Đọc dữ liệu nhị phân từ file vào bộ nhớ.

Cách dùng như sau:

fileObject - Đối tượng file.

address – Là địa chỉ đầu tiên mà vùng nhớ mà dữ liệu được

đọc vào được lưu.

size – Số lượng byte trong bộ nhớ được đọc vào từ file.

Ví dụ 1:

Ví dụ 2:

fileObject.read(address, size);

char kitu = 'A';

file.read(&kitu, sizeof(kitu));

char Data[5]

file.read(Data, sizeof(Data));

Trang 20

fstream file;

file.open("VD.dat", ios::out | ios::binary);

file.write(data, sizeof(data));

file.close();

file.open("VD.dat", ios::in | ios::binary);

file.read(data2, sizeof(data2));

for (int count = 0; count < SIZE; count++)

cout << data2[count] << " " ;

cout << endl; file.close();

Trang 21

E Hàm xóa và đổi tên file :

remove ( “đường dẫn tập tin” );

F Các hàm di chuyển con trỏ file

tính từ 0)

hoặc dương) từ vị trí xuất phát Vị trí xuất phát gồm:

• ios::beg : Từ đầu file

• ios::end : Từ cuối file

• ios::cur : Từ vị trí hiện tại của con trỏ

o Để làm việc với dòng nhập tên các phương thức trên được thay

tương ứng bởi các tên : seekg và tellg

Trang 22

G Hàm gcount() - Cho biết số kí tự hàm read đọc được

H Một số hàm khác sinh viên tự tìm hiểu : fread(), fwrite(),

fseek(), ftell(), …

Trang 23

Bài 1. Viết chương trình tạo ra 1 tệp tin với dữ liệu là các số

nguyên từ 1 đến 100

Bài 2. Nhập một dãy số gồm n phần tử số nguyên rồi lưu vào tệp

tin 1.txt

A Sắp xếp các số trong tệp 1.txt và lưu kết quả vào tệp 2.txt

B Xóa tệp 1.txt và đổi tên tệp 2.txt thành sort.txt

C Thêm vào cuối tệp sort.txt số 2015

Bài 3. Tạo một file với thông tin gồm danh sách các sinh viên và

điểm số của họ Tìm những sinh viên trong file đó sao cho điểm

số >=7 và lưu kết quả sang 1 file mới

Bài 4. Viết chương trình tìm xâu dài nhất trong một file văn bản

Bài 5. Viết Chương trình để tổ chức và quản lý file sinh viên (Họ tên, ngày sinh, giới tính, điểm các môn) với các chức năng :

Nhập, xem, xóa, sửa

Trang 24

www.themegallery.com

Ngày đăng: 15/05/2020, 22:51

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm