Một tệp tài liệu (file) là 1 tập thích hợp dữ liệu, chúngthường được tàng trữ tại các thiết bị như Ổ đĩa, USB, Đĩa cứng tuyệt trên các đámmây. Với các chương trình C từ bỏ bài thứ nhất đến nay, dữ liệu nhập vào trong mộtchương trình được nhập từ trải qua các bàn phím máy tính ...Tuy nhiên có nhiềuphương pháp để nhập dữ liệu đầu vào tương tự như xuất tài liệu đầu cho chương trình đólà thông qua tệp dữ liệu. Lịch trình C đã đọc tài liệu từ tệp dữ liệu, sau khiphân tích, cách xử trí và giám sát và đo lường với khối dữ liệu, thì chúng sẽ được lưu trữ trở lạitệp dữ liệu.

Bạn đang xem: Bài tập về file trong c

Bạn đã xem: bài tập về tệp tin trong c

Vậy tệp tài liệu là địa điểm lưu trữ tin tức dữ liệu vẫn đượcxử lý bởi chương trình. Tệp dữ liệu không những là nơi tàng trữ dữ liệu mà lại xéttheo khía cạnh mở rộng thì nó còn là một nơi đựng chương trình thực thi. Ví dụ nhưcác tệp gồm đuôi không ngừng mở rộng là .exe đấy là các tệp tiến hành của một chương trình.

Để áp dụng tệp dữ liệu chúng ta sẽ tò mò các vấn đềliên quan liêu tới vào/ra (I/O) của tệp.. Phương thức ghi thông tin vào một file, cácthức gọi thông tin xuất phát điểm từ một file. Rất có thể nhìn dìm các làm việc vào/ra một filecũng tương tự như như các thao tác vào/ra trên một sản phẩm đầu cuối, tuy vậy điểmkhác biệt cơ phiên bản của thao tác vào/ra với file với thiết bị đầu cuối đó là chươngtrình bắt buộc phải xác minh một file chũm thể bởi vì có những file vào ổ cứng. Xácđịnh đúng chuẩn một file với các thao tác với tệp tin như phát âm file, ghi tệp tin hoặc vớicả hai làm việc đọc/ghi file.

Một khái niệm đặc biệt quan trọng nữa liên quan đó là stream(Luồng dữ liệu). C cung cấp khai niệm luồng tài liệu (stream) là một khái niệutrừu tượng hóa nằm giữa người lập trình sẵn vào máy vào/ra. Các thiết bịvào/ra trong lập trình sẵn C đó là màn hình, lắp thêm in, bàn phím và tệp dữ liệu(file). Trong trường hợp này thiết bị vào/ra rõ ràng là file cùng một luồng dữ liệulà một giao diện logic có tương quan tới file. Mặc dù File có rất nhiều kiểu mẫukhác nhau tuy vậy với luồng như liệu thì toàn bộ đều kiểu như nhau. Luồng dữ liệucung cung cấp tính giao diện đồng bộ cho lập trình sẵn viên. Luồng dữ liệu vào/ra sử dụngvùng dữ liệu tạm nhằm lưu trữ, vùng tài liệu tạm hotline là buffer hay hotline là bộ lưu trữ đệmvà được thực hiện để đọc cùng ghi file.

Xét một bí quyết cụ thể, các thiết bị nước ngoài vi như ổ đĩa,băng tự và các thiết bị ngoại vi là hoàn toàn khác nhau. Song hệ thống file vớibộ nhớ đệm sẽ đổi khác chúng thành một thiết bị ngắn gọn xúc tích được call là luồng dữ liệu(Stream) thế nên cùng một hàm ghi tài liệu ra file trên đĩa thì rất có thể sử dụng nóra những thiết bị khác ví như màn hình, trang bị in.

Hình minh họa mô hình vào/ra của luồng dữ liệu:


*

Hìnhsố 1 : mô hình vào/ra luồng dữ liệu

Mô hình trên là mô hình vào/ra hiệu quả. Khi tạo thành luồngdữ liệu links với một tệp tin trên ổ đĩa, thì bộ nhớ lưu trữ đệm được auto tạo ra vànó được gắn kết với luồng dữ liệu. Bộ lưu trữ đệm là 1 trong khối bộ nhớ lưu trữ tạm được sử dụngđể lưu trữ thông tin phục vụ cho các thao tác đọc cùng ghi file. Vùng bộ lưu trữ tạmlà đề xuất thiết cũng chính vì đặc trưng của ổ đĩa là thiết bị có lý thuyết xử lý theo khối,điều này có nghĩa là ổ đĩa hoạt động hiệu quả nhất tác dụng nhất khi tài liệu đượcđọc và ghi vào khối có kích thước nhất định.Mỗi sản phẩm công nghệ phần cứng của những hãng khác biệt thì có kích cỡ khối tài liệu làkhác nhau, nó có thể có giá trị từ vài trăm cho vài nghìn bytes. Mặc dù thìkhông yêu cầu xác định đúng chuẩn kích khuôn khổ của khối.

Bộ nhớ đệm liên kết với luồng dữ liệu file đóng góp vaitrò là một tiếp xúc giữa luồng tài liệu với hartware ổ đĩa. Như công tác sẽghi dữ liệu vào luồng, dữ liệu sẽ tiến hành nghi vào bộ nhớ đệm cho tới khi bộ nhớ lưu trữ đệmbị đầy và những thực thể văn bản của bộ nhớ đệm sẽ tiến hành nghi, như 1 khối, vào ổđĩa. Các bước đọc tài liệu được tiến hành tương từ bỏ như tiến ghi dữ liệu. Quátrình chế tác và xử trí của bộ nhớ đệm được quản lý tự động hóa bởi hệ điều hành, lậptrình viên không cần nhiệt tình tới sự việc này. C cung ứng một số hàm để gia công việcvới bộ lưu trữ đệm.

Trong thực tế, những xử lý của bộ nhớ lưu trữ đệm xảy ra trongsuốt quá trình thực thi chương trình, đôi khi rất có thể dữ liệu mà lại chương trìnhghi vào trong ổ đĩa vẫn còn đấy trong bộ nhớ đệm. Nếu chương trình bị cheo vị mộtlý vì chưng nào đó, vào trường phù hợp này rất có thể dữ liệu chưa bị bị mất, nó có thể vẫnđược lưu trong bộ nhớ đệm, fan sử dụng có thể không biết vì tài liệu đó khôngcó trong ổ đĩa. Tài liệu nằm trong bộ đệm cho tới khi tài liệu trong bộ đệm đượclàm tươi hoặc là được ghi vào thành tệp tin trong ổ đĩa.

Luồng tài liệu được links với file trong quá trìnhthực hiện cách xử trí đọc file. Luồng tài liệu ngắt gắn kết với file khi thực hiệnthao tác đóng file. Vị trí hiện tại khi làm việc với tệp tin là vị trí xuất hiện thêm tạithao tác tiếp theo sau khi thực hiện hành vi đọc hoặc ghi file (Cái này sẽ đượclàm rõ ở các phần tiếp theo).

Có 2 các loại luồng tài liệu : Văn bạn dạng (Text) cùng nhị phân(binary).

Luồng dữ liệu văn bạn dạng là một dãy các kí tự(characters).

Một tệp văn bạn dạng có thể xem như là một luồng dữ liệu những kýtự. Luồng tài liệu văn phiên bản gắn kết với các file văn bản. Luồng dữ liệu văn bảnđược tổ chức triển khai thành các dòng, từng dòng có thể có đựng một hoặc nhiều những kí tựvà được đánh dấu bởi ký tự sệt để dứt dòng. Một cái có số lượng kí tự lớnnhất là 255 kí tự. Chú ý khái niệm dòng ở đó là khái niệm của file chứ khôngphải khai niệm string trong C. Lúc 1 luồng tài liệu kiểu văn bản được sử dụng,C thực hiện ký từ xuống chiếc ‘ ’ và ngẫu nhiên ký trường đoản cú nào khắc ghi sự kết thúc dòngmà hệ điều hành hỗ trợ.

Trong Hệ điều hành Dos sử dụng tổng hợp (CR-LF) để sangdòng mới. Khi tài liệu được ghi (write) vào file theo cơ chế văn bản, từng ‘ ’ sẽtự động biến hóa sang CR-LF. Trái lại khi phát âm (read) dữ liệu, từng khi chạm chán CR-LFnó sẽ tự động hóa chuyển đảo qua ‘ ’. Trong UNIX, sự thay đổi không được thựchiện, cam kết tự xuống dòng new là không chũm đổi.

Khi một file dữ liệu văn bản được sử dụng, gồm hai kiểutrình diễn thông tin cho tài liệu đó là : internal(Nội bộ) cùng external (mở rộng). Lấy ví dụ như : giá trị tất cả kiểu int xét theo khía cạnhnội bộ (bên trong) của thiết yếu int thì size lưu trữ của nó sẽ là 2 bytes hoặc4 bytes. Giả dụ xét theo điều tỉ mỷ external (mở rộng), thì dữ liệu int hoàn toàn có thể đượclưu trữ và mô tả dưới dạnh là 1 xâu ký tự hoặc hoàn toàn có thể là tài liệu kiểu hexadecimal.

Việc đổi khác dữ liệu giữa internal với external là rất đơn giản dàng. Ví dụ thực hiện printf để thựchiện các thao tác hiển thị thông tin và fprintf để ghi tin tức ra file. Thì printflà một lấy ví dụ về internal và fprintf là đại diện cho external, vấn đề chuyển đổinày được tiến hành thường xuyên. Trong làm việc đọc dữ liệu thì external scanfor fscanf là thay mặt cho việc đổi khác giữa internal cùng external.

File nhị phân đựng một tập hợp những bytes. Vào C, mộtbyte cùng một ký kết tự (charater) là tương đương. Khi làm việc với tệp tin nhị phân thìcũng đang tham chiếu tới luông dữ liệu nhị phân, đối với luồng tài liệu văn bạn dạng thìluồng tài liệu nhị phân tất cả 2 điểm khác:

Thứnhất: Luồng tài liệu nhị phân là dãy các bytes tương xứng 1-1trên các thiết bị ghi/đọc. Điều đó tức là không bao gồm sự chuyển đổi. Số bytesđược ghi và đọc bằng đúng số bytes nằm trên trang bị ngoài. Không tồn tại sự phântách giữa những dòng và không sử dụng ký tự ghi lại sự hoàn thành dòng. Các ký tựNULL và ký tự cuối dòng không có sự phân minh với những ký từ khác.

Xem thêm: Hubt: Trường Đại Học Phí Trường Kinh Doanh Và Công Nghệ Hà Nội 2021

Thứhai: C không tùy chỉnh thiết lập cấu trúc trên file nhị phân, cùng việcđọc với ghi file theo ngẫu nhiên cách nào sẽ được lập trình viên lựa chọn.

Trong C, giải pháp xử lý một file bằng kỹ thuật truy vấn ngẫunhiên liên quan tới việc di chuyển vị trí bây giờ sang vị trí thích hợp trongfile trước khi triển khai các làm việc đọc/ghi dữ liệu. Điều này chỉ ra rằng một đặcđiểm thứ hai của tệp tin nhị phân, file nhị phân có thể thực hiện các thao tác làm việc đọc/ghiđồng thời.

Ví dụ file cơ sở dữ liệu rất có thể được tạo nên và giải pháp xử lý nhưmột file nhị phân. Thao tác cập nhật một phiên bản ghi (record) tương quan tới việc địnhvị địa điểm của record, phát âm record vào trong cỗ nhớ, sửa đổi thông tin record,cuối thuộc là ghi quay lại record đó vào tệp tin trên ổ đĩa. Các thao tác làm việc này thườngxảy ra trên tệp tin nhị phân, tuy thế hiếm khi tìm thấy trong các ứng dụng xử lýfile văn bản.

2. Sử dụng file trong C

Có 4 hành động cơ bạn dạng nhất so với file. Những hành độngđó bao gồm:

+Khai báo một biến bé trỏ gồm kiểu FILE

+Mở file thông qua hàm fopen để ghi hoặc đọc

+Ghi hoặc đọc file (Xử lý file) thông sang một hàm nào đó

+Sử dụng hàm fclose để đóng file.

2.1 Khai báo con trỏ hình dạng FILE

Điều này được tiến hành thông qua biến bé trỏ trỏ đếncấu trúc file. File là một cấu tạo được khai báo vào stdio.h . Những thành phần trong cấu trúc FILE được chương trình sử dụngtrong các chuyển động truy cập không giống nhau. Mặc dù lập trình viên không duy nhất thiếtphải lưu ý đến vấn đề đó. Tuy vậy trước khi mỗi một file được mở, thì cần khaibáo một biến nhỏ trỏ tất cả kiểu FILE.

Khi hàm fopen() được gọi, hàm sẽ khởi tạo ra một mô tả củacấu trúc tệp tin và tạo ra một bé trỏ trỏ đến kết cấu file đó. Nhỏ trỏ này đượcsử dụng trong toàn bộ các vận động tiếp theo bên trên file. Cú pháp khai báo củacon trỏ gồm kiểu file như sau :

Cú phápFILE *fi le_pointer_name,…;

Trog đó :

Vídụ

FILE*ifp;

FILE*ofp;

Khi đó nhỏ trỏ ifp với ofp là 2 con trỏ gồm kiểu file.

le_pointer_name:Tên bé trỏ có kiểu FILE.

2.2. Mở file

Để mở một file thì bọn họ sử dụng hàm fopen. Cú pháphàm như sau :

FILE*fopen(const char *fname, const char *mode);

Trong đó :

fname :Tên tệp tin trên đĩa.

mode:Kiểu cách xử trí file.

Vídụ:

FILE *fptr = fopen(“example.txt”, “r”);

Mở tệp để thực hiện đọc dữ liệu

Với làm việc mở tệp để triển khai ghi dữ liệu, bọn chúng tathay “r” thành “w”.

Nguyên mẫu mã hàm fopen trong stdio.h. Trong đó cũng baogồm những hàm xử lý file cần thiết khác. Tên của file có kiểu xâu ký thoải mái vậy*fname sẽ là 1 trong hằng bé trỏ có kiểu char. Thương hiệu của file rất cần phải xác địnhchính xác.

Các tệp tin trong ổ đĩa khi nào cũng gồm tên. Tên file đượcđặt theo luật pháp của hệ điều hành. Vào DOS, thương hiệu file bao gồm độ dài từ là một đến 8 kýtự. Với hệ quản lý điều hành Windows và Unix thì thương hiệu file có độ dài lên tới mức 256 cam kết tự.

Tên tệp tin trong C rất có thể có đựng đường dẫn tương đối đầy đủ củafile.

Vídụ:

FILE*fptr = fopen(“c:\examdata\example.txt”, “r”);

Kiểuxử lý file : là một trong trong những xâu cam kết tự tất cả trongdanh sách sau. Nó quy định cách xử lý đối với các file sẽ mở