Chương thơm trước đã phân tích và lý giải về các lắp thêm nhập – xuất tiêu chuẩn được giải pháp xử lý vì ngữ điệu C. Ở chương này chúng ta sẽ thấy biện pháp lập trình sẵn viên sản xuất, mnghỉ ngơi và đóng góp các file văn bạn dạng hoặc file nhị phân cùng với các dữ liệu lưu trữ.

Bạn đang xem: Xử lý file trong c++

Một tệp tin màn biểu diễn một chuỗi các bytes, ko nhắc sẽ là file vnạp năng lượng phiên bản tốt tệp tin nhị phân. Ngôn ngữ thiết kế C cung ứng các hàm truy vấn nút chiều cao cũng tương tự thấp (nấc hệ điều hành) nhằm thao tác làm việc với tệp tin trên lắp thêm tàng trữ. Cmùi hương này vẫn đưa bạn tới những phương pháp Hotline hàm đặc biệt mang đến Việc làm chủ file.

Mở file vào C

Quý khách hàng rất có thể thực hiện hàm fopen() để sản xuất tệp tin mới hoặc nhằm msống các file đang vĩnh cửu. Cách Hotline này sẽ khởi tạo đối tượng các loại FILE, nhưng bao hàm thông tin cần thiết nhằm tinh chỉnh luồng. Dưới đây là một biện pháp gọi hàm:

FILE *fopen( const char * ten_tệp tin, const char * che_vì );Tại trên đây, ten_file là một chuỗi, được đánh giá như thương hiệu tệp tin cùng giá trị che_do truy vấn hoàn toàn có thể là hồ hết quý hiếm bên dưới đây:

ModeMiêu tả
rMsinh hoạt các file vẫn sống thọ với mục tiêu đọc
wMlàm việc những tệp tin cùng với mục đích ghi. Nếu các file này chưa xuất hiện thi file bắt đầu được tạo thành. Ở phía trên, lịch trình bước đầu ghi văn bản trường đoản cú phần khởi đầu của file
aMở file văn uống bản đến Việc ghi sống chính sách ghi tiếp theo sau vào cuối, nếu nó chưa có thì tệp tin bắt đầu được tạo. Đây là công tác ghi văn bản với phần cuối của file đã sống thọ.
r+Msinh hoạt file văn uống phiên bản với mục đích hiểu và ghi.
w+Mtại một file văn bạn dạng mang lại chính sách đọc và ghi. Nó có tác dụng trắng tệp tin sẽ tồn tại trường hợp tệp tin này có với chế tạo bắt đầu ví như tệp tin này chưa tồn tại.
a+Msống file đang sống thọ cùng với mục đích hiểu với ghi. Nó tạo ra file bắt đầu còn nếu như không lâu dài. Việc phát âm file đã bước đầu hiểu từ đầu dẫu vậy ghi file sẽ chỉ ghi vào thời điểm cuối tệp tin.

Xem thêm: Hướng Dẫn Cài Windows 10 Từ Ổ Cứng Cực Kỳ Đơn Giản, Hướng Dẫn Cài Đặt Windows Không Cần Usb/Dvd

Nếu chúng ta làm việc với những file nhị phân, chúng ta có thể bao gồm những cách truy xuất ráng cho những ngôi trường đúng theo bên trên nhỏng sau:

"rb", "wb", "ab", "rb+", "r+b", "wb+", "w+b", "ab+", "a+b"

Đóng tệp tin trong C

Để đóng 1 tệp tin chúng ta có thể sử dụng hàm fclose() bên dưới đây:

int fclose( FILE *fp );Hàm fclose( ) trả về quý giá zero nếu thành công hoặc EOF trường hợp gồm lỗi vào quy trình đóng tệp tin. Hàm này thực tiễn xóa các dữ liệu vào bộ đệm so với file, đóng tệp tin cùng giải pngóng bộ lưu trữ được sử dụng với tệp tin. EOF là một trong hằng số được khái niệm vào phần stdio.h.

Có những hàm đa dạng được cung cấp vày tlỗi viện chuẩn chỉnh của ngôn ngữ C nhằm phát âm và ghi từng ký tự cùng vào một dạng cùng với con số ký từ bỏ cố định. Chúng ta đang xem xét vào ví dụ sau đây:

Ghi cho tới một file trong C

Dưới đây là hàm đơn giản và dễ dàng độc nhất nhằm thực hiện Việc ghi những ký từ riêng tới một luồng:

int fputc( int c, FILE *fp );Hàm fputc() ghi những ký từ với cái giá trị tsi mê số c đến một luồng ra tđam mê chiếu do bé trỏ fp. Nó đã trả về cam kết trường đoản cú được ghi ví như thành công xuất sắc hoặc EOF nếu như bao gồm lỗi. quý khách hoàn toàn có thể sử dụng hàm sau đây nhằm ghi một chuỗi ngừng bằng cam kết từ bỏ null đến một luồng:

int fputs( const char *s, FILE *fp );Hàm fputs() ghi chuỗi s mang lại một luồng ra tđam mê chiếu do fp. Nó trả về một giá trị không âm nếu thành công với trả về ký kết trường đoản cú EOF ví như xẩy ra một lỗi. Quý khách hàng có thể áp dụng hàm int fprintf(FILE *fp,const char *format, ...) nhằm ghi một chuỗi ra file . Thử ví dụ bên dưới đây:

Bạn cần chắc chắn rằng các bạn tất cả thư mục /tmp, nếu như không có, các bạn phải tạo lập thư mục này trên sản phẩm công nghệ chúng ta.

#include main() FILE *fp; fp = fopen("vidu.txt", "w+"); fprintf(fp, "Vi du kiem tra mê say fprintf ... "); fputs("Vi du kiem tra mê mẩn fputs ... ", fp); fclose(fp);khi đoạn code bên trên được biên dịch và thực hiện, nó tạo nên tệp tin mới là vidu.txt cùng ghi vào kia 2 loại của 2 hàm khác biệt. Cùng gọi file này ở phần tiếp theo.

Đọc tệp tin vào C

Dưới đấy là hàm đơn giản và dễ dàng nhất nhằm đọc một ký kết trường đoản cú riêng rẽ rẽ trường đoản cú file:

int fgetc( FILE * fp );Hàm fgetc() hiểu một ký kết trường đoản cú từ một file tsi mê chiếu vì chưng nhỏ trlàm việc fp. Giá trị trả về là ký kết từ đọc được trường hợp thành công xuất sắc, và vào trường hợp lỗi trả về EOF. Hàm tiếp sau đây được cho phép độc giả chuỗi từ 1 luồng:

char *fgets( char *buf, int n, FILE *fp );Hàm fgets() gọi n-1 ký trường đoản cú xuất phát từ 1 luồng vào tđắm đuối chiếu vày fp. Nó copy chuỗi phát âm mang đến bộ đệm buf, gán cam kết tự null vào chấm dứt chuỗi.

Nếu hàm gặp yêu cầu một ký kết tự newline (mẫu mới) (xuống dòng) " " hoặc ký kết tự EOF trước khi gọi được số lượng về tối đa các cam kết tự, nó đang chỉ trả về những ký từ bỏ cho đến cam kết trường đoản cú xuống loại và cam kết trường đoản cú xuống cái mới. Quý Khách có thể thực hiện hàm int fscanf(FILE *fp, const char *format, ...) nhằm gọi chuỗi xuất phát điểm từ 1 file, tuy nhiên giới hạn việc phát âm sống khoảng White đầu tiên gặp gỡ phải:

#include main() FILE *fp; char buff<255>; fp = fopen("vidu.txt", "r"); fscanf(fp, "%s", buff); printf("1 : %s ", buff ); fgets(buff, 255, (FILE*)fp); printf("2: %s ", buff ); fgets(buff, 255, (FILE*)fp); printf("3: %s ", buff ); fclose(fp);Biên dịch và chạy lịch trình C trên, trước tiên nó phát âm tự tệp tin được tạo ra từ khu vực trước cùng in ra công dụng sau đây:

*

Cùng xem một ít chi tiết hơn về điều đang xẩy ra trên đây. Trước tiên fscanf() chỉ gọi This chính vì kế tiếp nó gặp mặt cần lốt biện pháp, tiếp sau hàm fgets() trả về những cái sót lại cho đến khi chạm mặt cam kết từ bỏ cuối file. Cuối cùng nó Điện thoại tư vấn hàm fgets() để hiểu hoàn toàn mẫu thứ 2.

Hàm Nhập – Xuất nhị phân vào C

Dưới đó là hai hàm, có thể thực hiện cho việc đầu vào và output nhị phân:

size_t fread(void *ptr, size_t kich_co_cua_cac_phan_tu, size_t so_phan_tu, FILE *ten_file);size_t fwrite(const void *ptr, size_t kich_co_cua_cac_phan_tu, size_t so_phan_tu, FILE *ten_file);Cả 2 hàm trên được thực hiện để đọc và ghi các khối hận bộ nhớ lưu trữ, thường xuyên là các mảng hoặc cấu trúc.