Đọc và ghi file trong c++

Trở lại với lập trình C cơ bản, hôm nay mình muốn chia sẻ với mọi người cách đọc file và ghi file. Đây cũng là phần mà các bạn học bất kỳ ngôn ngữ lập trình nào cũng phải bít đến.

Đọc file và ghi file là gì?

Đọc file: Là cách thức bạn dùng ngôn ngữ lập trình duyệt và lấy được nội dung của file đó ra, còn phần còn lại xử lý nội dung đó như thế nào là tùy bạn. hi

Ghi file: Là công việc bạn ghi một nội dung nào đó lưu vào file.

Nhiều khi học bài này xong tui cảm giác nó không có tác dụng gì cả, hii đó là suy nghĩ của các bạn mới học lập trình. Công việc mình lập trình cốt lõi là tương tác lấy dữ liệu, thu thập thông tin … lưu trữ trong cơ sở dữ liệu. Có đôi khi không cần thiết phải làm công việc đó, chỉ lưu tạm để xử lý cho qua công đoạn nào đó thì chỉ cần lưu vào file để sử dụng rồi hủy sẻ nhẹ nhàn hơn rất nhìu.

Bài ví dụ cho phần này mình sẽ ghi file trước sau đó đọc file vừa ghi. Chúng ta sẽ lưu thông tin mảng một chiều vào trong file. Bạn hình dung trước khi ghi phải có nội dung nên ta nhập mảng trước.

Ghi file trong C

Sau khi nhập thì mảng a[] đã có giá trị lúc này chúng ta sẻ ghi vào trong file, giả sử là file bcdonline.txt.

Giải thích:

Trước tiên để làm việc với file bạn cần khai báo biến con trỏ FILE bạn nhớ là phải viết hoa hoàn toàn từ này.

Sau đó bạn mở bằng lệnh bằng fopen[], trong đó tham số “wt” cho phép bạn ghi file.

fprintf[]: sẽ giúp bạn ghi vào file như bạn khai báo, bạn hình dung thay vì hiện trên màn hình bằng printf[] thì ở đây ta hiện lên file bằng cách fprintf[].

Giả sử mình nhập n là 3, mảng là 9, 8, 7. Bạn vào thư mục gốc của file lưu sẻ thấy kết quả này khi mở file bcdonline.txt bằng notepad:

Sau khi đã có file rồi thì chúng ta tiến hành đọc file lên và xử lý. Công việc bạn code như sau:

1

2

3

4

5

6

7

8

9

10

11

Giải thích:

  • Cũng như nói ở trên có các phần xử lý đặt trưng khi tương tác với FILE.
  • Tham số “rt” giúp bạn đọc dữ liệu từ file
  • Đọc file với lệnh fscanf[];
  • Sau đó đóng file fclose[];

Để kiểm tra bạn đã đọc được file hay chưa chúng ta tiến hành xử lý dữ liệu đã đọc được bằng cách xuất nó ra màn hình.

1

2

3

4

5

6

7

8

9

Ở đây %3d để cho các chữ số sẻ chiếm 3 khoảng không gian và được canh lề sẽ đẹp hơn.

Kết quả cả quá trình đọc file và ghi file của chúng ta sẽ chạy lên như sau.


Kết luận: Ok, vậy là xong phần ghi và đọc file trong C, đây chỉ là giới thiệu cơ bản cho các bạn, phát triển lên thêm nha! Chúc thành công!

Trong bài viết này, mình sẽ hướng dẫn bạn cách để làm việc với file sử dụng ngôn ngữ lập trình C. Một số hàm đọc ghi file trong C cơ bản như fprintf[], fscanf[]….chúng ta cùng bắt đầu nhé.

Đọc ghi file để làm gì?

  • Dữ liệu được lưu ở biến của chương trình, và nó sẽ biến mất khi chương trình kết thúc. Sử dụng file để lưu trữ dữ liệu cần thiết để đảm bảo dữ liệu của chúng ta không bị mất ngay cả khi chương trình của chúng ta ngừng chạy.
  • Nếu chương trình của bạn có đầu vào[input] là lớn, bạn sẽ rất vất vả nếu phải nhập mỗi khi chạy. Thay vào đó, hãy lưu vào file và chương trình của bạn sẽ tự đọc mỗi lần khởi chạy

Có những loại file phổ biến nào?

Trước khi bạn làm việc với file, bạn nên biết về 2 kiểu file khác nhau sau đây:

  1. File văn bản – text files
  2. File nhị phân – binary file

File văn bản – text files

File văn bản là file thường có đuôi là .txt. Những file này bạn có thể dễ dàng tạo ra bằng cách dùng các text editer thông dụng như Notepad, Notepad++, Sublime Text,…

Khi bạn mở các file này bằng các text editer nói trên, 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 nội dung của file này.

Kiểu file này thuận tiện cho chúng ta trong việc sử dụng hàng ngày, nhưng nó sẽ kém bảo mật và cần nhiều bộ nhớ để lưu trữ hơn.

File nhị phân – Binary files

File nhị phân thường có đuôi mở rộng là .bin

Thay vì lưu trữ dưới dạng văn bản thuần thúy, các file này được lưu dưới dạng nhị phân, chỉ bao gồm các số 0 và 1. Bạn cũng sẽ thấy các con số này nếu cố mở nó bằng 1 text editer kể trên.

Loại file này giúp lưu trữ được dữ liệu với kích thước lớn hơn, không thể đọc bằng các text editer thông thường và thông tin lưu trữ ở loại file được bảo mật hơn so với file văn bản.

Các thao tác với file trong C

Khi làm việc với file, bạn cần khai báo 1 con trỏ kiểu FILE.

Mở/Đóng file

Để mở file thì ta sử dụng hàm fopen[] nằm trong thư viện stdio.h. Cú pháp của nó như sau:

f = fopen["fileopen","mode"];

Ví dụ 1:

f = fopen["E:\\dayso.txt","w"];

Ví dụ 2:

f = fopen["E:\\khachhang.bin","rb"];

Tham số thứ nhất là đường dẫn file, tham số thứ 2 là chế độ mở file mode.

Các tham số của “mode”

ModeÝ nghĩa
rMở để đọc.
rbMở đọc theo chế độ binary.
wMở để ghi.
wbMở ghi theo chế độ binary.
aMở để ghi thêm dữ liệu vào cuối file.
abMở ở chế độ binary,
Dữ liệu sẽ được ghi vào cuối file.
r+Mở để đọc và ghi
rb+Mở để đọc và ghi ở chế độ binary.
w+Mở để đọc và ghi
wb+Mở để đọc và ghi ở chế độ binary..
a+Mở để đọc và bổ sung dữ liệu.
ab+Mở để đọc và bổ sung dữ liệu. chế độ binary.

Khi làm việc với tập tin hoàn tất, kể cả là file nhị phân hay file văn bản. Bạn cần đóng file sau khi làm việc với nó xong.

Việc đóng file đang mở có thể được thực hiện bằng cách dùng hàm fclose[].

fclose[fptr]; //Con trỏ FILE trỏ tới file cần được đóng.

Đọc/Ghi file văn bản trong C

Để làm việc với file văn bản, chúng ta sẽ sử dụng fprintf[] và fscanf[], nó cũng làm việc tương tự như printf[]scanf[] nhưng thay vì đọc/ghi trên màn hình console lúc này sẽ đọc ghi từ file văn bản.

VD1. Ghi file sử dụng fprintf[]

#include #include int main[] { int num; FILE *f; f= fopen["D:\\dayso.txt","w"]; if[f== NULL] { printf["Error!"]; exit[1]; } printf["Enter num: "]; scanf["%d",&num]; fprintf[f,"%d",num]; fclose[f]; return 0; }

Chương trình nhận số num từ bàn phím và ghi vào file văn bản dayso.txt.

Sau khi bạn chạy chương trình này, bạn sẽ thấy file văn bản dayso.txt được tạo mới trong ổ D trên máy tính. Khi mở file này lên, sẽ thấy số mà bạn vừa nhập cho biến num kia.

Ví dụ 2: Đọc dữ liệu từ file text sử dụng fscanf[]

#include #include int main[] { int num; FILE *f; if [[f= fopen["C:\\dayso.txt","r"]] == NULL]{ printf["Error! opening file"]; exit[1]; } fscanf[f,"%d", &num]; printf["Value of n=%d", num]; fclose[f]; return 0; }

Chương trình này sẽ đọc giá trị số được lưu trong file dayso.txt mà chương trình ở VD1 vừa tạo ra và in lên màn hình.

Đọc/Ghi file nhị phân trong C

Các hàm fread[] và fwrite[] trong C được sử dụng để đọc và ghi file trong C ở dạng nhị phân.

Ví dụ 3: Ghi file nhị phân

#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ỏ đọc file trả về NULL. exit[1]; } for[n = 1; n < 5; ++n] { num.n1 = n; num.n2 = 5*n; num.n3 = 5*n + 1; fwrite[&num, sizeof[struct threeNum], 1, fptr]; } fclose[fptr]; return 0; }

Ghi vào file nhị phân, cần sử dụng hàm fwrite []. Hàm này có bốn tham số:

  1. Đường dẫn đến file cần ghi
  2. Kích thước của dữ liệu
  3. Số loại dữ liệu như vậy
  4. Con trỏ đến file mà bạn muốn ghi

Ví dụ 4: Đọc file nhị phân

#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ỏ đọc file trả về NULL. exit[1]; } for[n = 1; n < 5; ++n] { num.n1 = n; num.n2 = 5*n; num.n3 = 5*n + 1; fwrite[&num, sizeof[struct threeNum], 1, fptr]; } fclose[fptr]; return 0; }

Đọc file nhị phân thì ta sử dụng hàm fread[], hàm này cũng có bốn tham số như hàm fwrite.

Video liên quan

Chủ Đề