File i/o trong c

Trong bài bác này bọn họ vẫn tìm hiểu giải pháp hiểu ghi file trong C bằng phương pháp áp dụng các hàm xử lý file: fprintf(), fscanf(), fread(), fwrite(), fseek().

Bạn đang xem: File i/o trong c

Đa số sinh viên nước ta học lập trình sẵn C là để luyện tư duy ngắn gọn xúc tích, cũng có thể có một số trong những fan dùng để kiến thiết vận dụng thực tế cho nên việc thao tác cùng với tệp tin là cực kỳ quan trọng Khi đề nghị tàng trữ dữ liệu mà không nên hệ quản lí trị DataBase.

1. Tại sao bắt buộc tàng trữ tài liệu lên file?

lúc công tác dứt thì cục bộ tài liệu có khả năng sẽ bị mất, bởi vì vậy nếu như khách hàng lưu lại vào file thì sẽ xem xét lại được ban bố.


*

Bài viết này được đăng tại tec-ftu.org, không được copy dưới gần như hiệ tượng.

Hoặc nếu như bạn đề xuất nhập tài liệu Khủng thì vẫn mấ không hề ít thời gian. Nhưng nếu như bạn lưu giữ nó vào một tệp tin tất cả cấu tạo đồng hóa, và dùng lệnh phát âm ghi file vào C thì việc cách xử trí đang nkhô nóng gọn gàng hơn không ít.

Quý khách hàng cũng có thể tiện lợi copy dữ liệu từ bỏ trang bị này lịch sự thứ không giống.


Quảng cáo


Tuy nhiên bài toán lưu trữ này là ko an toàn, vị người dùng rất có thể msinh hoạt file ra hiểu một bí quyết thuận lợi, chứ không cần giống hệt như lưu trữ vào các hệ cai quản trị DataBase nhỏng Squốc lộ Server / MySquốc lộ / Oracle.

2. Có hầu như một số loại tệp tin phổ cập nào?

Khi cách xử lý tệp tin vào C thì bạn cần quyên tâm mang lại nhì loại file nhỏng sau:

Text filesBinary files

Text file

Là một file bao gồm phần không ngừng mở rộng là txt, nó là tệp tin thường thì phải có thể mngơi nghỉ nó bởi mọi mức sử dụng hiểu tệp tin text đơn giản như notepad.

khi các bạn mnghỉ ngơi những tệp tin đó, bạn sẽ thấy toàn bộ ngôn từ vào tệp bên dưới dạng văn uống bạn dạng đơn thuần. Quý khách hàng hoàn toàn có thể thuận tiện sửa đổi hoặc xóa câu chữ.

Chúng cần được buổi tối ưu sẽ giúp đỡ đọc dễ dàng, bảo mật thông tin, tương tự như chiếm phần không nhiều dung lượng tàng trữ.

Binary files

Là các file gồm phần đuôi không ngừng mở rộng là .bin và nó có khá nhiều trong máy vi tính của bạn đấy.

Tgiỏi bởi vì tàng trữ ở dạng văn bản thuần túy thì bọn họ tàng trữ sống dạng nhị phân (0 cùng 1), bởi vậy form size file sẽ rất dài, nhưng lại bù lại dữ liệu sẽ không còn thể gọi bằng đôi mắt thường được đề nghị an toàn hơn.

3. Các làm việc cơ bạn dạng với file vào C

Bây giờ ta vẫn thực hành một vài ba thao tác làm việc với file thường dùng độc nhất vô nhị nhé.

Knhì báo trong trỏ vẻ bên ngoài FILE

lúc làm việc cùng với tệp tin thì các bạn buộc phải khai báo con trỏ dạng hình FILE, nó đang trỏ mang đến file buộc phải phát âm trên máy tính xách tay và giúp trình biên dịch phát âm ghi dữ liệu với tệp tin.


FILE *fptr;

Mtại một file

Để msống tệp tin thì ta áp dụng hàm fopen() phía bên trong tlỗi viện stdio.h. Cú pháp của chính nó nhỏng sau:


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


fopen("E:\cprogram\newprogram.txt","w");fopen("E:\cprogram\oldprogram.bin","rb");
Đường dẫn msống tệp tin rất ví dụ. Nhưng chính sách đọc file mode thì bạn hãy xem bảng dưới đây.

ModeMeaning of Mode
rMngơi nghỉ để đọc.
rbMnghỉ ngơi gọi theo cơ chế binary.
wMnghỉ ngơi nhằm ghi.
wbMlàm việc ghi theo chế độ binary.
aMở nhằm ghi thêm tài liệu vào thời gian cuối file.

Xem thêm: #1 Free Youtube Subscriber Hack Theo Dõi, Hack Follow, Auto Sub, Tăng Follow

abMsống ngơi nghỉ cơ chế binary,Dữ liệu sẽ được ghi vào cuối tệp tin.
r+Msinh hoạt nhằm đọc cùng ghi
rb+Msống để đọc cùng ghi ngơi nghỉ chế độ binary.
w+Msinh sống để hiểu và ghi
wb+Mở để đọc và ghi sống chế độ binary..
a+Msinh hoạt nhằm gọi với bổ sung tài liệu.
ab+Msinh sống để hiểu và bổ sung tài liệu. cơ chế binary.

Đóng kết nối

Sau lúc mlàm việc tệp tin cùng triển khai xong xuôi thì bạn nên đóng góp file lại bằng cách sau:


fclose(fptr);
Trong đó fptr là con trỏ của tệp tin vẫn cách xử trí.

4. Đọc với ghi vào tệp tin text

Để đọc cùng ghi tài liệu vào file text thì ta áp dụng nhì hàm fprintf() với 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 rước một vài tự người dùng và lưu trữ trong file program.txt.

Sau khi biên dịch với chạy công tác này, bạn có thể thấy tệp tin program.txt được tạo thành vào ổ C của máy tính. Khi các bạn msinh hoạt tệp tin chúng ta có thể thấy số nguyên các bạn sẽ nhập.

Ví dụ 2: Đọc tài liệu tự file 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;
Cmùi hương trình này gọi số ngulặng bao gồm trong tệp tin program.txt và in ra màn hình.

Nếu các bạn đã sản xuất thành công tệp tin tự ví dụ 1 thì Khi chạy lịch trình này vẫn nhận ra số nguim chúng ta đã nhập.

Các hàm khác như fgetchar (), fputc (), v.v. sử dụng giống như theo cách này.

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

Hai hàm fread() cùng fwrite() được dùng làm đọc và ghi vào tệp tin làm việc định dạng nhị phân binary.

Ghi tệp tin nhị phân

Để ghi vào tệp tin nhị phân, bạn cần thực hiện hàm fwrite (). Hàm này có tư ttê mê số:

Đường dẫn đến tệp tin nên ghiKích thước của dữ liệuSố các loại tài liệu nlỗi vậyCon trỏ đến file cơ mà bạn muốn ghi

fwrite(addressData, sizeData, numbersData, pointerToFile);
Ví dụ: Ghi dữ liệu vào file nhị phân áp dụng si 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 giả dụ bé trỏ đọc tệp tin trả về NULL. exit(1); for(n = 1; n

Đọc dữ liệu file nhị phân

Để đọc file nhị phân thì ta thực hiện hàm fread(), hàm này cũng có thể có tứ tsay mê số nlỗi 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 ví như nhỏ trỏ phát âm file trả về NULL. exit(1); for(n = 1; n

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

Nếu bạn có tương đối nhiều loại ghi phía bên trong tệp tin với nên truy vấn đến vị trí ví dụ thì chỉ cần lặp qua tất cả những dòng cùng đem cái ao ước mang, vấn đề này đã lãng phí tương đối nhiều bộ nhớ với thời gian hoạt động.

Ta có thể thực hiện hàm fseek () để trỏ cho mẫu mong muốn một cách nkhô giòn độc nhất mà lại không phải lưu ý toàn bộ văn bản của tệp tin.

Cú pháp:


fseek(FILE * stream, long int offmix, int whence);
Tmê mẩn số thứ nhất là nhỏ trỏ cho tệp tin. Tmê mẩn số sản phẩm hai là kích thước tài liệu phải ghi vào. Tsay đắm số lắp thêm ba rọi xác định trí ban đầu tìm kiếm.

Tđắm đuối số whence chính là một trong tía hằng số sau:

WhenceÝ nghĩa
SEEK_SETBắt đầu trường đoản cú địa chỉ đầu tiên của file.
SEEK_ENDBắt đầu từ vị trí cuối cùng của tệp tin.
SEEK_CURBắt đầu từ bỏ địa chỉ ngày nay 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 con trỏ hiểu file trả về NULL. exit(1); // Di gửi con trỏ về cuối tệp tin fseek(fptr, -sizeof(struct threeNum), SEEK_END); for(n = 1; n
Chương trình này đang ban đầu đọc các bạn dạng ghi từ tệp tin program.bin theo thứ trường đoản cú ngược trở lại (từ lúc cuối mang lại trước) với in ra màn hình hiển thị.