Trong bài bác này họ sẽ khám phá cách phát âm ghi file trong C bằng cách sử dụng những hàm cách xử trí file: fprintf(), fscanf(), fread(), fwrite(), fseek().Bạn vẫn xem: Đọc ghi tệp tin trong c


*

*

Đa số sinh viên nước ta học thiết kế C là nhằm luyện bốn 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 tế nên việc thao tác với tệp tin là rất đặc biệt quan trọng khi cần tàng trữ dữ liệu nhưng mà không đề nghị hệ cai quản trị CSDL.

Bạn đang xem: Đọc File Trong C (Fgetc

1. Lý do cần tàng trữ dữ liệu lên file?

Khi chương trình hoàn thành thì toàn bộ dữ liệu sẽ bị mất, vị vậy nếu như bạn lưu vào file thì đang xem lại được thông tin.

Hoặc nếu bạn cần nhập dữ liệu lớn thì đang mấ khá 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ó kết cấu nhất quán, và dùng lệnh hiểu ghi file trong C thì câu hỏi xử lý sẽ nhanh gọn lẹ hơn vô cùng nhiều.

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

Bạn cũng có thể dễ dàng copy tài liệu từ máy này sang máy khác.

Tuy nhiên việc lưu trữ này là không an toàn, bởi người dùng có thể mở tệp tin ra gọi một bí quyết dễ dàng, chứ không giống hệt như lưu trữ vào các hệ cai quản trị database như SQL server / MySQL / Oracle.

2. Gồm có loại file phổ biến nào?

Khi giải pháp xử lý file trong C thì các bạn cần suy nghĩ hai các loại file như sau:

Text filesBinary files

Text file

Là một file tất cả phần không ngừng mở rộng là txt, nó là file thông thường nên có thể mở nó bằng những dụng cụ đọc tệp tin text dễ dàng và đơn giản như notepad.

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

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

Binary files

Là những file gồm phần đuôi không ngừng mở rộng là .bin cùng nó có khá nhiều trong vật dụng tính của khách hàng đấy.

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

3. Các thao tác cơ bản với tệp tin trong C

Bây tiếng 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 độc nhất vô nhị nhé.

Khai báo nhỏ trỏ vẻ bên ngoài FILE

Khi thao tác với file thì chúng ta phải khai báo bé trỏ kiểu dáng FILE, nó vẫn trỏ đến file cần đọc trên máy tính xách tay và giúp trình biên dịch đọc ghi tài liệu với file.

FILE *fptr;

Mở một file

Để mở tệp tin thì ta sử dụng hàm fopen() phía trong thư viện stdio.h. Cú pháp của chính 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 cơ chế đọc tệp tin mode thì bạn hãy xem bảng dưới đây.

ModeMeaning of Mode
rMở để đọc.
rbMở đọc theo cơ chế binary.
wMở nhằm ghi.
wbMở ghi theo cơ chế binary.
aMở nhằm ghi thêm dữ liệu vào cuối file.

Xem thêm: Nơi Tổ Chức Sinh Nhật Lãng Mạn Ở Hà Nội, Remember Event

abMở ở chế độ binary,Dữ liệu sẽ tiến hành ghi vào thời điểm cuối file.
r+Mở để đọc và 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ở nhằ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 cùng thực hiện kết thúc thì chúng ta nên đóng file lại bằng cách sau:

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

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

Để đọc với ghi dữ liệu vào file text thì ta thực hiện hai hàm fprintf() với fscanf().

Ví dụ: Ghi tài liệu vào file text

#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 này lấy một vài từ người tiêu dùng và lưu trữ trong file program.txt.

Sau khi biên dịch cùng chạy lịch trình này, chúng ta có thể thấy tệp tin program.txt được tạo trong ổ C của máy tính. Khi bạn mở file bạn cũng có thể thấy số nguyên bạn đã nhập.

Ví dụ 2: Đọc tài liệu từ tệp tin 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 hiểu số nguyên tất cả trong file program.txt với in ra màn hình.

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

Các hàm khác như fgetchar (), fputc (), v.v. Sử dụng giống như theo bí quyết này.

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

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

Ghi file nhị phân

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

Đường dẫn đến file đề nghị ghiKích thước của dữ liệuSố loại dữ liệu như vậyCon trỏ mang đến file mà bạn muốn ghi

fwrite(addressData, sizeData, numbersData, pointerToFile);Ví dụ: Ghi tài liệu vào tệp tin nhị phân sử dụng ham ffwrite()

#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","wb")) == NULL) printf("Error! opening file"); // Dừng chương trình nếu nhỏ trỏ phát âm file trả về NULL. Exit(1); for(n = 1; n

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

Để đọc file nhị phân thì ta sử dụng hàm fread(), hàm này cũng có thể 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; file *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); for(n = 1; n

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

Nếu bạn có khá nhiều dòng ghi bên phía trong file cùng cần truy vấn đến vị trí rõ ràng thì chỉ cần lặp qua tất cả các chiếc và lấy dòng ao ước lấy, vấn đề đó sẽ lãng phí rất nhiều bộ nhớ lưu trữ và thời gian hoạt động.

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

Cú pháp:

fseek(FILE * stream, long int offset, int whence);Tham số trước tiên là nhỏ trỏ mang lại file. Tham số lắp thêm hai là kích thước dữ liệu buộc phải ghi vào. Thông số thứ ba chỉ định vị trí bước đầu tìm.

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

#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 lịch trình nếu bé trỏ phát âm 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 lịch trình này sẽ bước đầu đọc các phiên bản ghi từ tệp tin program.bin theo sản phẩm tự trái lại (từ cuối mang đến trước) và in ra màn hình.