Đọc và ghi file trong c++

     

Trong bài xích này bọn họ sẽ tìm hiểu cách đọc ghi file trong C bằng phương pháp sử dụng những hàm cách xử lý file: fprintf(), fscanf(), fread(), fwrite(), fseek().

Bạn đang xem: đọc và ghi file trong c++

*


*

Đa số sinh viên việt nam học xây dựng C là để luyện bốn duy logic, cũng có một số người dùng để xây dựng ứng dụng thực tế nên việc làm việc với tệp tin là rất đặc biệt khi cần lưu trữ dữ liệu mà lại không yêu cầu hệ quản ngại trị CSDL.

1. Nguyên nhân cần lưu trữ dữ liệu lên file?

Khi chương trình ngừng thì tổng thể dữ liệu sẽ ảnh hưởng mất, bởi vậy nếu bạn lưu vào tệp tin thì vẫn xem lại được thông tin.

Hoặc nếu bạn cần nhập tài liệu lớn thì sẽ mấ không hề ít thời gian. Nhưng nếu như khách hàng lưu nó vào trong 1 file có cấu tạo nhất quán, và sử dụng lệnh phát âm ghi tệp tin trong C thì câu hỏi xử lý sẽ nhanh chóng hơn vô cùng nhiều.

Bài viết này được đăng tại


Bạn cũng rất có thể dễ dàng copy tài liệu từ sản phẩm công nghệ này sang thiết bị khác.

Tuy nhiên việc tàng trữ này là không an toàn, bởi fan dùng hoàn toàn có thể mở tệp tin ra phát âm một phương pháp dễ dàng, chứ không y hệt như lưu trữ vào những hệ quản ngại trị database như SQL server / MySQL / Oracle.

2. Bao hàm loại file thịnh hành nào?

Khi xử trí file vào C thì các bạn cần suy nghĩ hai nhiều loại file như sau:

Text filesBinary files

Text file

Là một file có phần không ngừng mở rộng là txt, nó là file thường thì nên có thể mở nó bởi những chính sách đọc file text dễ dàng và đơn giản như notepad.

Khi bạn mở các file đó, các bạn sẽ thấy toàn bộ nội dung trong tệp bên dưới dạng văn bản thuần túy. Bạn cũng có thể dễ dàng sửa đổi hoặc xóa nội dung.

Chúng rất cần được tối ưu sẽ giúp đỡ dễ đọc, bảo mật, tương tự như chiếm ít dung lượng lưu trữ.

Binary files

Là số đông file có phần đuôi không ngừng mở rộng là .bin cùng nó có khá nhiều trong thứ tính của người sử dụng đấy.

Thay vì lưu trữ ở dạng văn bản thuần túy thì họ tàng trữ ở dạng nhị phân (0 với 1), do vậy kích thước file sẽ tương đối dài, nhưng lại bù lại dữ liệu sẽ không còn thể đọc bằng mắt thường xuyên được nên an ninh hơn.

3. Các thao tác làm việc cơ phiên bản với tệp tin trong C

Bây giờ ta sẽ thực hành thực tế một vài làm việc với tệp tin thông dụng duy nhất nhé.

Khai báo bé trỏ kiểu FILE

Khi thao tác làm việc với tệp tin thì chúng ta phải khai báo nhỏ trỏ thứ hạng FILE, nó đã trỏ đến file buộc phải đọc trên máy tính và góp trình biên dịch hiểu ghi dữ liệu với file.


FILE *fptr;

Mở một file

Để mở file thì ta thực hiện hàm fopen() phía trong thư viện stdio.h. Cú pháp của nó như sau:


ptr = fopen("fileopen","mode");
Ví dụ:


fopen("E:\cprogram\newprogram.txt","w");fopen("E:\cprogram\oldprogram.bin","rb");
Đường dẫn mở file rất rõ ràng ràng. Nhưng chế độ đọc tệp tin mode thì các bạn hãy xem bảng bên dưới đây.

ModeMeaning of Mode
rMở nhằm đọc.
rbMở đọc theo chính sách binary.
wMở nhằm ghi.
wbMở ghi theo chế độ binary.
aMở để ghi thêm dữ liệu vào cuối file.
abMở ở chính sách binary,Dữ liệu sẽ được ghi vào thời gian cuối file.

Xem thêm: Đừng Khóc Nữa Làm Vợ Của Anh Đi, Đam Mỹ Đừng Khóc Nữa, Làm Vợ Của Anh Đi Chương 1

r+Mở để đọc với ghi
rb+Mở nhằm đọc và ghi ở chế độ binary.
w+Mở nhằm đọc và ghi
wb+Mở nhằm đọc với ghi ở chế độ binary..
a+Mở để đọc và bổ sung cập nhật dữ liệu.
ab+Mở nhằm đọc và bổ sung cập nhật dữ liệu. Cơ chế binary.

Đóng kết nối

Sau khi mở file với thực hiện dứt thì bạn nên đóng tệp tin lại bằng cách sau:


fclose(fptr);
Trong đó fptr là con trỏ của file đang xử lý.

4. Đọc với ghi vào file text

Để đọc cùng ghi dữ liệu vào tệp tin text thì ta sử dụng hai hàm fprintf() cùng fscanf().

Ví dụ: Ghi dữ liệu vào tệp tin text


#include #include int main() int num; file *fptr; fptr = fopen("C:\program.txt","w"); if(fptr == NULL) printf("Error!"); exit(1); printf("Enter num: "); scanf("%d",&num); fprintf(fptr,"%d",num); fclose(fptr); return 0;
Chương trình này lấy một số trong những từ người tiêu dùng và tàng trữ trong tệp tin program.txt.

Sau lúc biên dịch và chạy công tác này, bạn cũng có thể thấy file program.txt được chế tạo trong ổ C của dòng sản phẩm tính. Khi bạn mở file bạn có thể thấy số nguyên chúng ta đã nhập.

Ví dụ 2: Đọc tài liệu từ tệp tin text


#include #include int main() int num; file *fptr; if ((fptr = fopen("C:\program.txt","r")) == NULL) printf("Error! opening file"); exit(1); fscanf(fptr,"%d", &num); printf("Value of n=%d", num); fclose(fptr); return 0;
Chương trình này hiểu số nguyên bao gồm trong file program.txt và in ra màn hình.

Nếu chúng ta đã tạo thành công xuất sắc file từ lấy ví dụ như 1 thì khi chạy chương trình này sẽ nhận thấy số nguyên bạn đã nhập.

Các hàm khác như fgetchar (), fputc (), v.v. Sử dụng tương tự theo cách này.

4. Đọc với ghi dữ liệu vào tệp tin binary

Hai hàm fread() cùng fwrite() được dùng để làm đọc cùng ghi vào file ở định dạng nhị phân binary.

Ghi file nhị phân

Để ghi vào tệp tin nhị phân, bạn phải sử dụng hàm fwrite (). Hàm này còn có bốn tham số:

Đường dẫn mang đến file bắt buộc ghiKích thước của dữ liệuSố loại tài liệu như vậyCon trỏ mang lại file mà bạn có nhu cầu ghi

fwrite(addressData, sizeData, numbersData, pointerToFile);
Ví dụ: Ghi dữ liệu vào tệp tin nhị phân thực hiện ham ffwrite()


#include #include struct threeNum int n1, n2, n3;;int main(){ int n; struct threeNum num; file *fptr; if ((fptr = fopen("C:\program.bin","wb")) == NULL) printf("Error! opening file"); // Dừng chương trình nếu con trỏ gọi file trả về NULL. Exit(1); for(n = 1; n

Đọc tài liệu file nhị phân

Để gọi file nhị phân thì ta thực hiện hàm fread(), hàm này cũng có bốn thông số như hàm fwrite.


fread(addressData, sizeData, numbersData, pointerToFile);
#include #include struct threeNum int n1, n2, n3;;int main(){ int n; struct threeNum num; tệp tin *fptr; if ((fptr = fopen("C:\program.bin","rb")) == NULL) printf("Error! opening file"); // Dừng lịch trình nếu nhỏ trỏ phát âm file trả về NULL. Exit(1); for(n = 1; n

5. Lấy tài liệu bằng hàm fseek()

Nếu bạn có nhiều dòng ghi phía bên trong file và cần truy vấn đến vị trí rõ ràng thì chỉ việc lặp qua tất cả các loại và rước dòng ý muốn lấy, điều đó sẽ tiêu tốn lãng phí rất nhiều bộ lưu trữ và thời hạn hoạt động.

Ta hoàn toàn có thể sử dụng hàm fseek () để trỏ mang đến dòng mong muốn một cách sớm nhất mà không phải duyệt tất cả nội dung của file.

Cú pháp:


fseek(FILE * stream, long int offset, int whence);
Tham số thứ nhất là bé trỏ cho file. Tham số thiết bị hai là kích cỡ dữ liệu phải ghi vào. Thông số thứ bố chỉ xác định trí ban đầu tìm.

Tham số whence đó là một trong ba hằng số sau:

WhenceÝ nghĩa
SEEK_SETBắt đầu tự vị trí trước tiên của file.
SEEK_ENDBắt đầu tự vị trí ở đầu cuối của file.

Xem thêm: Động Cơ Có Thiết Bị Điều Chỉnh Tốc Độ Là, Một Số Ứng Dụng Phổ Biến Của Biến Tần

SEEK_CURBắt đầu từ vị trí lúc này của con trỏ

#include #include struct threeNum int n1, n2, n3;;int main(){ int n; struct threeNum num; file *fptr; if ((fptr = fopen("C:\program.bin","rb")) == NULL) printf("Error! opening file"); // Dừng công tác nếu nhỏ trỏ gọi file trả về NULL. Exit(1); // di chuyển con trỏ về cuối file fseek(fptr, -sizeof(struct threeNum), SEEK_END); for(n = 1; n
Chương trình này sẽ bắt đầu đọc các bạn dạng ghi từ tệp tin program.bin theo vật dụng tự trái lại (từ cuối mang đến trước) cùng in ra màn hình.