Cách đọc tệp văn bản trong C

Cach Doc Tep Van Ban Trong C



tệp văn bản là một trong những loại tệp được sử dụng rộng rãi nhất trên máy tính. Chúng có thể được sử dụng cho nhiều nhiệm vụ khác nhau, chẳng hạn như lưu trữ tài liệu văn bản hoặc mã nguồn chương trình. Chúng được lưu trong hệ thống với .txt sự mở rộng. Trong khi làm việc với mã C, bạn có thể cần đọc tệp văn bản như một phần của dự án hoặc để nhận trợ giúp từ tệp văn bản. Thay vì quay lại vị trí để đọc tệp văn bản, tốt hơn là đọc nó bên trong mã.

Bài viết này thảo luận về những cách hữu ích để đọc tệp văn bản bằng ngôn ngữ lập trình C.

Đọc một tệp văn bản trong C

Có bốn phương pháp để đọc một tệp văn bản trong C, đó là.







Phương pháp 1: Sử dụng hàm fscanf() để đọc tệp văn bản trong C

Các fscanf() hàm là một hàm thư viện chuẩn nhận vào một mảng các đối số và chuyển đổi chúng thành các giá trị mà chương trình của bạn có thể sử dụng. Nó tìm thấy một chuỗi định dạng bên trong tệp và trả về một chuỗi định dạng khi đọc từ tệp. Chuỗi định dạng phải được đặt trong dấu ngoặc kép (“ ”) để chương trình của bạn không hiểu chúng như một phần cú pháp riêng của nó.



Các fscanf() chức năng đọc dữ liệu vào các vị trí được cung cấp bởi các mục trong danh sách đối số. Tất cả các mục trong danh sách đối số phải trỏ đến các biến có kiểu khớp với kiểu xác định kiểu trong chuỗi định dạng.



Nó cung cấp EOF (cuối tệp) hoặc số biến có giá trị được gán cho chúng.





Hãy xem một ví dụ để đọc một tệp văn bản bằng cách sử dụng fscanf() chức năng:

#include
int chính ( )
{
TÀI LIỆU * ptr = fopen ( 'file_name.txt' , 'r' ) ;
nếu như ( ptr == NULL ) {
bản inf ( 'không có tập tin như vậy tồn tại.' ) ;
trở lại 0 ;
}
đồ ăn vặt [ 100 ] ;
trong khi ( fscanf ( ptr, '%s' , buf ) == 1 )
bản inf ( '%S \N ' , buf ) ;
trở lại 0 ;
}

Trong mã này, fopen() Hàm được sử dụng để mở tệp dưới biến con trỏ ptr. fscanf() chức năng sau đó được sử dụng để đọc tệp và sau đó in nội dung của nó.



đầu ra

Cách 2: Sử dụng hàm fread() để đọc tệp văn bản trong C

Dữ liệu từ tệp được đọc bởi Sợ hãi() phương pháp và được lưu trữ trong một bộ đệm. Lên đến các mục đếm được đọc vào một bộ đệm mảng bởi sợ hãi() chức năng từ luồng đầu vào, được cung cấp dưới dạng đối số chức năng.

Khi tổng số mục được đọc thành công, một đối tượng size_t được trả về. Nếu giá trị này khác với giá trị do chương trình chỉ định, thì có thể đã xảy ra lỗi hoặc đã đến cuối tệp.

#include
int chính ( )
{
bộ đệm char [ 33 ] ;
TÀI LIỆU * suối;
luồng = fopen ( 'file_name.txt' , 'r' ) ;
số int = fread ( & bộ đệm, sizeof ( than ) , 33 , suối ) ;
fđóng ( suối ) ;
bản inf ( 'Dữ liệu được đọc từ tệp: %s \N ' , đệm ) ;
bản inf ( 'Số phần tử đã đọc: %d' , đếm ) ;
trở lại 0 ;
}

Trong mã này, các fopen() chức năng được sử dụng để mở tệp và sau đó là sợ hãi() chức năng sau đó được sử dụng để đọc tệp và sau đó in nội dung của nó. 33 hiển thị số lượng ký tự mà nó sẽ đọc từ tệp.

đầu ra

Phương pháp 3: Sử dụng hàm fgets() để đọc tệp văn bản trong C

với fgets() chức năng, một dòng được đọc từ luồng đã chỉ định và được lưu trữ trong biến chuỗi tương ứng. Khi (n-1) ký tự, ký tự xuống dòng hoặc cuối tệp được đọc hoặc tùy theo điều kiện nào xảy ra trước, chương trình sẽ kết thúc. Nếu hàm thành công, chuỗi tương tự sẽ được trả về. Nội dung của chuỗi được giữ nguyên tại chỗ và xuất hiện con trỏ null nếu hàm chạm vào Cuối tệp mà không có ký tự nào được đọc.

Trong trường hợp xảy ra lỗi, nó cung cấp một con trỏ rỗng.

#include
int chính ( ) {
TÀI LIỆU * fp;
char str [ 60 ] ;
fp = fopen ( 'file.txt' , 'r' ) ;
nếu như ( fp == NULL ) {
lo sợ ( 'Lỗi khi mở tệp' ) ;
trở lại ( - 1 ) ;
}
nếu như ( fgets ( đường, 100 , fp ) ! =NULL ) {
đặt ( str ) ;
}
fđóng ( fp ) ;
trở lại ( 0 ) ;
}

Trong mã này, tập tin.txt tập tin được mở bởi fopen() chức năng và sau đó fgets() chức năng sau đó được sử dụng để đọc các chuỗi trong tệp và sau đó in chúng. 100 hiển thị số lượng chuỗi nó sẽ đọc.

đầu ra

Phương pháp 4: Sử dụng hàm fgetc() để đọc tệp văn bản trong C

Các fgtec() chức năng được sử dụng để đọc từng ký tự một. Sau đó, hàm trả về mã ASCII của ký tự mà nó đã đọc. Nó trả về ký tự đã có tại vị trí đã chỉ định của con trỏ tệp. Con trỏ tệp sau đó di chuyển đến ký tự tiếp theo. Nếu có lỗi hoặc con trỏ đến cuối tệp, hàm này sẽ trả về EOF (End-Of-File).

#include
int chính ( )
{
TÀI LIỆU * fp = fopen ( 'file.txt' , 'r' ) ;
nếu như ( fp == NULL )
trở lại 0 ;
LÀM {
ký tự c = fgetc ( fp ) ;
nếu như ( kẻ phản bội ( fp ) )
phá vỡ ;
bản inf ( '%c' , c ) ;
} trong khi ( 1 ) ;
fđóng ( fp ) ;
trở lại ( 0 ) ;
}

Các ' tập tin.txt ” tập tin được mở bởi fopen() trong mã này dưới biến con trỏ fp. Các ký tự của tệp sau đó được đọc bằng cách sử dụng fgetc() phương pháp in các ký tự đã được đọc.

đầu ra

Phần kết luận

Đọc tệp là điều cần thiết đối với mọi người dùng máy tính và đặc biệt đối với nhà phát triển, điều quan trọng là anh ta có thể truy cập tệp bằng mã của mình. Vì vậy, 4 phương pháp được đề cập ở trên trong bài viết để đọc một tập tin văn bản sử dụng ngôn ngữ C. fscanf() sợ hãi() được sử dụng để đọc các tệp tương tự, với ngoại lệ là sợ hãi() cho phép chúng tôi chỉ định số lượng ký tự mà người dùng muốn đọc, trong khi fgets() được sử dụng để đọc từng dòng tệp và fgetc() được sử dụng để đọc một ký tự tệp theo ký tự.