LÀM VIỆC VỚI FILE TRONG C++, ĐỌC GHI FILE TRONG NGÔN NGỮ LẬP TRÌNH C
Trong bài bác này họ sẽ mày mò cách gọi ghi file trong C bằng phương pháp sử dụng các hàm xử trí file: fprintf(), fscanf(), fread(), fwrite(), fseek().
Bạn đang xem: Làm việc với file trong c++


Đa số sinh viên việt nam học lập trình C là để luyện tư duy logic, cũng có thể có một số người dùng làm xây dựng ứng dụng thực tiễn nên việc thao tác với tệp tin là rất đặc trưng khi cần tàng trữ dữ liệu mà lại không đề xuất hệ cai quản trị CSDL.
1. Lý do cần lưu trữ dữ liệu lên file?
Khi chương trình xong xuôi thì cục bộ dữ liệu sẽ ảnh hưởng mất, bởi vì vậy nếu như bạn lưu vào file thì đã xem lại được thông tin.
Hoặc nếu như bạn cần nhập tài liệu lớn thì vẫn mấ tương đối nhiều thời gian. Nhưng nếu như khách hàng lưu nó vào một trong những file có cấu tạo nhất quán, và cần sử dụng lệnh hiểu ghi file trong C thì vấn đề xử lý sẽ nhanh chóng hơn hết sức nhiều.
Bài viết này được đăng tại
Bạn cũng có thể dễ dàng copy dữ liệu từ lắp thêm này sang trang bị khác.
Tuy nhiên việc lưu trữ này là không an toàn, bởi tín đồ dùng hoàn toàn có thể mở tệp tin ra đọc một cách dễ dàng, chứ không y như lưu trữ vào các hệ quản trị csdl như SQL hệ thống / My
SQL / Oracle.
2. Bao gồm loại file phổ cập nào?
Khi xử lý file trong C thì chúng ta cần để ý đến hai các loại file như sau:
Text filesBinary files
Text file
Là một file gồm phần không ngừng mở rộng là txt, nó là file thường thì nên rất có thể mở nó bởi những nguyên lý đọc file text đơn giản như notepad.
Khi chúng ta mở các file đó, bạn sẽ thấy toàn bộ nội dung vào tệp dưới dạng văn phiên bản thuần túy. Chúng ta cũng có thể dễ dàng sửa đổi hoặc xóa nội dung.
Chúng cần phải tối ưu để giúp đỡ dễ đọc, bảo mật, tương tự như chiếm ít dung tích lưu trữ.
Binary files
Là phần đông file gồm phần đuôi không ngừng mở rộng là .bin với nó có tương đối nhiều trong sản phẩm tính của chúng ta đấy.
Thay vì lưu trữ ở dạng văn phiên bản thuần túy thì họ tàng trữ ở dạng nhị phân (0 cùng 1), do vậy size file sẽ rất dài, dẫu vậy bù lại dữ liệu sẽ không thể đọc bằng mắt hay được nên an ninh hơn.
3. Các thao tác cơ bạn dạng với file trong C
Bây giờ ta sẽ thực hành một vài làm việc với file thông dụng độc nhất nhé.
Khai báo con trỏ giao diện FILE
Khi thao tác với file thì các bạn phải khai báo nhỏ trỏ phong cách FILE, nó vẫn trỏ mang đến file bắt buộc đọc trên máy tính xách tay và góp trình biên dịch hiểu ghi tài liệu với file.
FILE *fptr;
Mở một file
Để mở file thì ta áp dụng hàm fopen() bên 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. Nhưng chính sách đọc file mode thì bạn hãy xem bảng dưới đây.
r | Mở nhằm đọc. |
rb | Mở hiểu theo chính sách binary. |
w | Mở để ghi. |
wb | Mở ghi theo chế độ binary. |
a | Mở nhằm ghi thêm tài liệu vào cuối file. |
ab | Mở ở chế độ binary,Dữ liệu sẽ được ghi vào thời điểm cuối file. |
r+ | Mở để đọc cùng ghi |
rb+ | Mở để đọc và ghi ở cơ chế binary. |
w+ | Mở nhằm đọc và ghi |
wb+ | Mở để đọc và ghi ở cơ chế binary.. |
a+ | Mở để đọc và bổ sung dữ liệu. |
ab+ | Mở nhằm đọc và bổ sung dữ liệu. Cơ chế binary. |
Đóng kết nối
Sau khi mở file với thực hiện chấm dứt thì chúng ta nên đóng file lại bằng phương pháp sau:
fclose(fptr);
Trong đó fptr là bé trỏ của file sẽ xử lý.
4. Đọc và ghi vào file text
Để đọc với ghi tài liệu vào tệp tin text thì ta áp dụng hai hàm fprintf() với fscanf().
Ví dụ: Ghi tài liệu vào file 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 trong những từ người tiêu dùng và lưu trữ trong tệp tin program.txt.
Sau khi biên dịch với chạy chương trình này, bạn cũng có thể thấy tệp tin program.txt được tạo trong ổ C của sản phẩm tính. Khi bạn mở file bạn có thể thấy số nguyên bạn đã nhập.
Ví dụ 2: Đọc tài liệu từ file text
#include #include int main() int num; tệp tin *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 đọc số nguyên có trong file program.txt với in ra màn hình.
Nếu các bạn đã tạo thành công file từ lấy một ví dụ 1 thì lúc chạy chương trình này sẽ cảm nhận số nguyên các bạn đã nhập.
Các hàm khác ví như fgetchar (), fputc (), v.v. Sử dụng tương tự như theo phương pháp này.
4. Đọc cùng ghi tài liệu vào file binary
Hai hàm fread() với fwrite() được dùng để đọc cùng ghi vào tệp tin ở định hình nhị phân binary.
Ghi tệp tin nhị phân
Để ghi vào tệp tin nhị phân, bạn cần sử dụng hàm fwrite (). Hàm này còn có bốn tham số:
Đường dẫn mang đến file đề xuất ghiKích thước của dữ liệu
Số loại tài liệu như vậy
Con trỏ đến file mà bạn muốn ghi
fwrite(address
Data, size
Data, numbers
Data, pointer
To
File);
Ví dụ: Ghi tài liệu vào tệp tin nhị phân áp dụng ham ffwrite()
#include #include struct three
Num int n1, n2, n3;;int main(){ int n; struct three
Num num; file *fptr; if ((fptr = fopen("C:\program.bin","wb")) == NULL) printf("Error! opening file"); // Dừng lịch trình nếu bé trỏ đọc file trả về NULL. Exit(1); for(n = 1; n
Đọc dữ liệu file nhị phân
Để phát âm file nhị phân thì ta thực hiện hàm fread(), hàm này cũng có bốn tham số như hàm fwrite.fread(address
Data, size
Data, numbers
Data, pointer
To
File);
#include #include struct three
Num int n1, n2, n3;;int main(){ int n; struct three
Num 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 con trỏ gọi file trả về NULL. Exit(1); for(n = 1; n
5. Lấy dữ liệu bằng hàm fseek()
Nếu bạn có không ít dòng ghi bên phía trong file với cần truy cập đến vị trí ví dụ thì chỉ việc lặp qua tất cả các dòng và rước dòng ước ao lấy, điều đó sẽ lãng phí rất nhiều bộ lưu trữ và thời gian hoạt động.Ta hoàn toàn có thể sử dụng hàm fseek () nhằm trỏ mang lại dòng mong ước một cách sớm nhất có thể mà không hẳn duyệt toàn bộ nội dung của file.
Cú pháp:
fseek(FILE * stream, long int offset, int whence);
Tham số thứ nhất là con trỏ đến file. Tham số vật dụng hai là size dữ liệu cần ghi vào. Tham số thứ bố chỉ định vị trí bắt đầu tìm.
Tham số whence đó là một trong bố hằng số sau:
SEEK_SET | Bắt đầu tự vị trí trước tiên của file. |
SEEK_END | Bắt đầu trường đoản cú vị trí cuối cùng của file. |
SEEK_CUR | Bắt đầu từ bỏ vị trí hiện tại của bé trỏ |
#include #include struct three
Num int n1, n2, n3;;int main(){ int n; struct three
Num 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 bé trỏ phát âm file trả về NULL. Exit(1); // dịch chuyển con trỏ về cuối tệp tin fseek(fptr, -sizeof(struct three
Num), SEEK_END); for(n = 1; n
Chương trình này sẽ bắt đầu đọc các phiên bản ghi từ tệp tin program.bin theo sản phẩm công nghệ tự ngược lại (từ cuối mang đến trước) với in ra màn hình.
Có không hề ít hàm phục vụ cho quá trình đọc ghi tệp tin trong C. Trong bài xích hướng dẫn này, xây dựng không khó sẽ gợi ý bạn phương pháp để làm vấn đề với file sử dụng ngôn ngữ lập trình C. Một vài hàm hiểu ghi file trong C hoàn toàn có thể kể tới như là: fprintf(), fscanf(), fread(), fwrite(), fseek … và một trong những hàm không giống nữa.

Nếu bạn đang tìm kiếm đọc ghi file trong C++, thì nên đọc nội dung bài viết này nhé.
NỘI DUNG BÀI VIẾT
ToggleCác hình dạng file
Thao tác với tệp tin trên ngữ điệu CĐọc/Ghi tệp tin văn phiên bản trong CĐọc/Ghi tệp tin nhị phân trong CMột số lấy ví dụ về hiểu ghi file trong C
Tại sao bọn họ cần cho file?
Dữ liệu được lưu lại ở biến hóa của chương trình, với nó sẽ mất tích khi chương trình kết thúc. Sử dụng file để lưu trữ dữ liệu quan trọng để đảm bảo an toàn dữ liệu của họ không bị mất trong cả khi lịch trình của chúng ta ngừng chạy.Nếu chương trình của người sử dụng có đầu vào(input) là lớn, bạn sẽ tương đối vất vả nếu đề xuất nhập mỗi một khi chạy. Cố vào đó, hãy lưu vào tệp tin và chương trình của các bạn sẽ tự đọc các lần khởi chạyDễ dàng sao chép, dịch chuyển dữ liệu giữa các thiết bị với nhau
Các dạng hình file
Trước khi chúng ta làm việc với file, bạn nên biết về 2 giao diện file khác nhau sau đây:File văn phiên bản – text filesFile nhị phân – binary file
1. File văn bạn dạng – text files
File văn bạn dạng là file thường sẽ có đuôi là .txt. Gần như file này bạn cũng có thể dễ dàng tạo thành ra bằng cách dùng các text editer thường dùng như Notepad, Notepad++, Sublime Text,…
Khi bạn mở những file này bằng những text editer nói trên, các bạn sẽ thấy được văn bản ngay và có thể dễ dàng thao tác sửa, xóa, thêm ngôn từ của tệp tin này.
Kiểu file này thuận lợi cho họ trong việc áp dụng hàng ngày, tuy vậy nó vẫn kém bảo mật thông tin và đề xuất nhiều bộ nhớ để lưu trữ hơn.
Xem thêm: Trung Tâm Lao Động Ngoài Nước, Trung Tâm Dịch Vụ Việc Làm Bình Dương
2. File nhị phân – Binary files
File nhị phân thường có đuôi không ngừng mở rộng là .bin
Thay vì lưu trữ dưới dạng văn phiên bản thuần thúy, những file này được lưu bên dưới dạng nhị phân, chỉ bao gồm các số 0 với 1. Bạn cũng trở nên thấy những con số này nếu cầm cố mở nó bởi 1 text editer nhắc trên.
Loại file này giúp lưu trữ được dữ liệu với size lớn hơn, quan yếu đọc bằng các text editer thường thì và tin tức lưu trữ ở loại file được bảo mật thông tin hơn so với file văn bản.
Các thao tác với file
Trong ngôn từ lập trình C, tất cả một số làm việc chính khi thao tác với file, bao gồm cả tệp tin văn bản và tệp tin nhị phân:
Tạo bắt đầu một fileMở một file đang có
Đóng file sẽ mở
Đọc tin tức từ file/ Ghi tin tức ra file
Thao tác với tệp tin trên ngôn ngữ C
Khi thao tác với file, bạn cần khai báo 1 con trỏ đẳng cấp FILE. Bài toán khai báo này là quan trọng để tất cả sự liên kết giữa chương trình của doanh nghiệp và tập tin mà bạn cần thao tác.
FILE *fptr;
Thao tác mở file
Để phát âm ghi file trong C cũng giống như trong mọi ngôn từ lập trình, việc thứ nhất bạn yêu cầu làm là mở tệp tin mà bạn muốn làm việc. Trong ngôn ngữ lập trình C, chúng ta cũng có thể mở file bằng phương pháp sử dụng hàm fopen() trong tủ sách stdio.h như sau:fptr = fopen("fileopen","mode")Trong kia mode là 1 trong tham số bọn họ cần chỉ định.
Ví dụ:
fptr = fopen("E:\cprogram\newprogram.txt","w");// hoặcfptr = fopen("E:\cprogram\oldprogram.bin","rb");Giả sử tập tin `newprogram.txt` chưa tồn tại trong thư mục `E:cprogram`. Ví dụ trước tiên với mode = "w" sẽ cho phép chương trình auto tạo ra file `newprogram.txt` nếu nó đang chưa có. Và kế tiếp mở tệp tin này lên nhưng lịch trình chỉ có thể ghi dữ liệu vào mà thiết yếu đọc.Mode là w chỉ chất nhận được chương trình ghi(nếu sẽ có tài liệu thì ghi đè) văn bản của file.Với ví dụ đồ vật 2, mode là rb được cho phép chương trình mở 1 file nhị phân đã tất cả sẵn `oldprogram.bin`. Cùng với trường đúng theo này, chương trình của khách hàng chỉ có thể đọc file và thiết yếu ghi câu chữ vào file.
Các tham số của “mode”
Dưới đó là các giá trị có thể có của thông số mode nói trên:r | Mở file chỉ có thể chấp nhận được đọc | Nếu file không tồn tại, fopen() trả về NULL. |
rb | Mở file chỉ chất nhận được đọc bên dưới dạng nhị phân. | Nếu file không tồn tại, fopen() trả về NULL. |
w | Mở file chỉ có thể chấp nhận được ghi. | Nếu file sẽ tồn tại, nội dung sẽ ảnh hưởng ghi đè. Nếu file không tồn tại, nó sẽ tiến hành tạo từ động. |
wb | Open for writing in binary mode. | Nếu file đang tồn tại, nội dung sẽ ảnh hưởng ghi đè. Nếu file không tồn tại, nó sẽ được tạo trường đoản cú động. |
a | Mở file ở chính sách ghi “append”. Tức là sẽ ghi vào thời gian cuối của văn bản đã có. | Nếu tệp tin không tồn tại, nó sẽ được tạo từ bỏ động. |
ab | Mở file ở chế độ ghi nhị phân “append”. Tức là sẽ ghi vào thời điểm cuối của câu chữ đã có. | Nếu tệp tin không tồn tại, nó sẽ tiến hành tạo từ bỏ động. |
r+ | Mở file được cho phép cả đọc với ghi. | Nếu file không tồn tại, fopen() trả về NULL. |
rb+ | Mở file chất nhận được cả đọc cùng ghi sinh sống dạng nhị phân. | Nếu tệp tin không tồn tại, fopen() trả về NULL. |
w+ | Mở file được cho phép cả đọc với ghi. | Nếu file vẫn tồn tại, nội dung có khả năng sẽ bị ghi đè. Nếu tệp tin không tồn tại, nó sẽ tiến hành tạo từ bỏ động. |
wb+ | Mở file được cho phép cả đọc với ghi ngơi nghỉ dạng nhị phân. | Nếu file vẫn tồn tại, nội dung sẽ ảnh hưởng ghi đè. Nếu tệp tin không tồn tại, nó sẽ được tạo trường đoản cú động. |
a+ | Mở file chất nhận được đọc và ghi “append”. | Nếu tệp tin không tồn tại, nó sẽ được tạo trường đoản cú động. |
ab+ | Mở file có thể chấp nhận được đọc và ghi “append” nghỉ ngơi dạng nhị phân. | Nếu file không tồn tại, nó sẽ được tạo từ bỏ động. |
Thao tác đóng góp file
Khi thao tác làm việc với tập tin hoàn tất, kể cả là tệp tin nhị phân hay file văn bản. Bạn phải đóng file sau khi thao tác với nó xong.
Việc đóng file đã mở hoàn toàn có thể được thực hiện bằng phương pháp dùng hàm fclose().
fclose(fptr); //Con trỏ tệp tin trỏ tới file cần phải đóng.
Đọc/Ghi file văn phiên bản trong C
Chúng ta đã học biện pháp đọc ghi file trong C với tệp tin văn bản trước. Với file nhị phân, chúng ta kéo xuống dưới để xem tiếp.Để thao tác với tệp tin văn bản, bọn họ sẽ sử dụng fprintf() với fscanf().
VD1. Ghi file áp dụng fprintf()#include #include int main() int num; tệp tin *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 thừa nhận số num từ bàn phím và ghi vào tệp tin văn phiên bản program.txt.
Sau khi chúng ta chạy lịch trình này, bạn sẽ thấy tệp tin văn phiên bản program.txt được tạo new trong ổ C trên máy tính bạn. Lúc mở tệp tin này lên, bạn sẽ thấy số mà các bạn vừa nhập cho thay đổi num kia.
VD2. Đọc file thực hiện fscanf()#include #include int main() int num; tệp tin *fptr; if ((fptr = fopen("C:\program.txt","r")) == NULL) printf("Error! opening file"); // Program exits if the file pointer returns NULL. Exit(1); fscanf(fptr,"%d", &num); printf("Value of n=%d", num); fclose(fptr); return 0;Chương trình này vẫn đọc cực hiếm số được giữ trong tệp tin program.txt mà chương trình ở VD1 vừa tạo thành và in lên màn hình.
Đọc/Ghi tệp tin nhị phân trong C
Các hàm fread() cùng fwrite() vào C được áp dụng để đọc và ghi file trong C làm việc dạng nhị phân.
Ghi file nhị phânĐể ghi tệp tin nhị phân, bạn cần sử dụng hàm fwrite(). Hàm này nên 4 tham số: địa chỉ của trở thành lưu tài liệu cần ghi, kích cỡ của trở thành lưu tài liệu đó, số lượng kiểu dữ liệu của biến đổi đó và nhỏ trỏ tệp tin trỏ tới file bạn có nhu cầu ghi.
fwrite(address_data,size_data,numbers_data,pointer_to_file);VD3. Ghi file nhị phân thực hiện fwrite()#include #include struct three
Num int n1, n2, n3;;int main(){ int n; struct three
Num num; tệp tin *fptr; if ((fptr = fopen("C:\program.bin","wb")) == NULL) printf("Error! opening file"); // Program exits if the file pointer returns NULL. Exit(1); for(n = 1; n trong VD3 này, chương trình sẽ khởi tạo ra một tệp tin program.bin trên ổ đĩa C của bạn. Công tác này vẫn khai báo 1 đẳng cấp dữ liệu kết cấu lưu 3 giá trị số n1, n2, n3; cùng nó được sử dụng trong hàm main mang tên biến là num.
Trong vòng lặp, những số được ghi vào file sử dụng hàm fwrite(). Các tham số gồm:
Tham số đầu tiên là địa chỉ cửa hàng của biến numTham số thứ 2 là kích thước của biến hóa num
Tham số thiết bị 3 là con số kiểu dữ liệu – ở đó là 1.Tham số lắp thêm 4 là con trỏ file trỏ cho tới tệp tin program.bin
Cuối cùng, chúng ta đóng file thực hiện fclose().
Đọc tệp tin nhị phânHàm fread() cũng đều có 4 tham số tựa như như hàm fwrite() phía trên.
fread(address_data,size_data,numbers_data,pointer_to_file);Ví dụ hiểu file nhị phân sử dụng fread()#include #include struct three
Num int n1, n2, n3;;int main(){ int n; struct three
Num num; file *fptr; if ((fptr = fopen("C:\program.bin","rb")) == NULL) printf("Error! opening file"); // Program exits if the tệp tin pointer returns NULL. Exit(1); for(n = 1; n Trong lấy một ví dụ này, độc giả file program.bin với lặp qua từng dòng. Các bạn sẽ nhận được những giá trị tương ứng khi bạn ghi vào vào VD3.
Một số ví dụ về hiểu ghi file trong C
Trong phần này, bản thân sẽ trình bày 2 lấy ví dụ như về phát âm ghi file trong C, bao hàm các bài tập hiểu ghi file sau:
Ghi văn bản vào file trong CĐọc tài liệu văn phiên bản từ file trong CGhi vào file một câu văn bản#include #include /* For exit() function */int main() char sentence<1000>; file *fptr; fptr = fopen("program.txt", "w"); if(fptr == NULL) printf("Error!"); exit(1); printf("Enter a sentence: "); gets(sentence); fprintf(fptr,"%s", sentence); fclose(fptr); return 0;Chạy thử:
Enter sentence: I am awesome and so are files.Đọc dữ liệu văn phiên bản từ file#include #include // For exit() functionint main() char c<1000>; file *fptr; if ((fptr = fopen("program.txt", "r")) == NULL) printf("Error! opening file"); // Program exits if tệp tin pointer returns NULL. Exit(1); // reads text until newline fscanf(fptr,"%<^ >", c); printf("Data from the file: %s", c); fclose(fptr); return 0;Giả sử tệp tin văn bạn dạng program.txt có nội dung như sau: