ĐỌC TỪNG DÒNG TRONG FILE C

  -  
*
It-Pro Training

Xử lý dữ liệu tệp văn bản - Lập trình C : Bài 18


*

Xử lý dữ liệu tệp văn bản - Lập trình C : Bài 18

Xửlý tài liệu tệp văn phiên bản - lập trình sẵn C : bài bác 18

1.Giới thiệu

Dữ liệu tệp tin văn phiên bản bao tất cả một tập hợp những chuỗi kýtự và văn bản được tổ chức triển khai thành dòng. Mỗi dòng gồm độ lâu năm khác nhau, số lượng lớnnhất các kí tự trong một dòng là 256 cam kết tự. Mỗi cái được khắc ghi bởi ký tự kếtthúc cái hay vệt xuống dòng. Vào DOS sẽ là cặp ký kết tự tinh chỉnh và điều khiển CR(CarriageReturn: nhảy về đầu cái , mã số ASCII = 13, ‘ ’) và LF (Line Feed : nhảy đầm thẳngxuống loại tiếp theo, mã số ASC II = 10, ‘ ’). Lúc lập trình C chỉ việc dùng‘ ’ là đủ để phương pháp 2 dòng.

Bạn đang xem: đọc từng dòng trong file c

Ví dụ đoạn văn phiên bản sau:

Lap Trinh C

123

Ket Thuc

Khi đó nếu xét theo cấu tạo của file văn bạn dạng trongDOS vẫn như sau

Lap trinh C CR LF 123 CRLF Ket Thuc EOF

Khi xây dựng C thì tệp tin *.c là 1 trong những loại tệp tin văn bảnđược sử dụng để lưu giữ trữ các đoạn mã lịch trình C.

2.Làm bài toán với file văn bản

C hỗ trợ 4 hàm tiếp sau đây để tiến hành đọc tệp tin văn bản.

+ fscanf()

+ fgets()

+ fgetc()

+ fread()

Với thao tác ghi tệp tin văn bản. C hỗ trợ 4 hàm sau

+ fprintf()

+ fputs()

+ fputc()

+ fwrite()

2.1 Hàm putc và puts.

2.1.1 Hàm putc()

Hàm putc tiến hành ghi một ký kết tự vào một luồn dữ liệugắn với file. Nếu như nói một cách dễ dàng thì nó triển khai việc ghi dữ liệu mộtcharacter vào một file.

Cú pháp:

int putc(int ch, file *fp);

Mô tả :

+ch: là ký kết tự mong mỏi ghi vào vào file

+fp: nhỏ trỏ trỏ đến File

giá trị trả về hàm putc:

+ nếu như không lỗi thì trả về chính là ch.

+ Nếu bao gồm lỗi : trả về EOF (Có quý hiếm là 0).

Code minh họa

*

Hìnhsố 1 : lấy một ví dụ về thực hiện hàm fputc

Khi chạy chương trình hiệu quả sẽ ghi tài liệu ra filefile.txt như sau

!"#$%&"()*+,-./0123456789:;?
ABCDEFGHIJKLMNOPQRSTUVWXYZ<>^_`abcd

2.1.2 Hàm puts()

Vai trò của hàm puts là ghi xâu kí từ bỏ (string) vào luồngdữ liệu, luồng tài liệu này ghắn kết cùng với file. Kết quả hàm triển khai ghi xâu ký kết tựvào trong tệp tin này.

Cúpháp

charfputs(char *str, file *fp);

str: nhỏ trỏ thứ hạng char, bản chất nó chính xâu ký kết tự

fp:con trỏ file

Hàmtrả về một giá trị không âm nếu quá trình ghi tệp tin thành công

Nếulỗi hàm đang trả về EOF (Có giá trị 0).

Vídụ

*

Hìnhsố 2 : lấy một ví dụ về thực hiện hàm fputs

Hàm tiến hành ghi 2 loại “Ngon dại dột lap trinh C” và“Lam viec voi file Van Ban” vào file.txt. Vì sử dụng fopen(“file.txt”,”w+”) dovậy giả dụ file.txt đã tồn trên thì triển khai xóa tệp tin này với tạo bắt đầu file. Ngược lạinếu chưa có file.txt thì sẽ triển khai tạo mới file.txt.

Khi áp dụng fputs(“Ngon dại dột Lap trinh C . ”,fp); thìsẽ ghi xây ký kết tự “Ngon dại Lap trinh C” vào file. Kêt thúc cái này là thực hiệnxuống dòng.

Vậy khi đó dữ liệu sẽ tiến hành ghi vào file.txt bên trên 2dòng riêng biệt.

2.2 ngừng file (EOF – kết thúc of File)

Khi thực hiện đọc file, làm vắt nào để khẳng định đượcquá trình hiểu là kết thúc. Gồm một biện pháp là phụ thuộc vào kí tự đặc biệt quan trọng để ghi lại kếtthúc file.

Ví dụ

+ Kí tự # được để để khẳng định dòng cuối cùng

+ vào DOS áp dụng Ctr-z như là 1 trong ký tự quan trọng để xác định dứt file.

+ vào UNIX thực hiện Ctr-d như là một ký tự đặc trưng để xác định chấm dứt file.

Xácđịnh hoàn thành file

Đôi lúc không biết đúng mực mất thời gian bao thọ đểđọc tài liệu của một tệp tin tính từ thời điểm bắt đầu tiến trình gọi file cho khikết thúc tiến trình đọc file.

Có 2 phương pháp để xác định hoàn thành một file, khi gọi dữ liệufile văn bản, quá trình xử lý vẫn đọc từngkí từ bỏ một, khi đó lập trình viên hoàn toàn có thể đọc được kí tự tấn công dấu hoàn thành file.

Các hằng số biểu tượng EOF được quan niệm trongstdio.h có mức giá trị là -1. Khi tiến hành các hàm đọc tài liệu file văn bản theocách thức gọi từng kí tự, thì quá trình đọc được thực hiện cho đến khi chạm mặt kí tựđánh dấu dứt file.

Vì nghỉ ngơi đây quá trình đọc được thực hiện cho đến khi gặpkí tự tấn công dấu xong file nên những lập trình viên thường áp dụng while hoặcdo - while

while((c= fgetc(fp)) != EOF)

Hàm fgetc(fp) trả về một char, trong trường hợpfgetc(fp) == EOF thì xong xuôi quá trình hiểu file.

2.3. Các hàm fgetc cùng fgets

Sử dụng các hàm fgetc và fgets giao hàng cho quy trình đọcdữ liệu từ file văn bản.

Xem thêm: Các Câu Lệnh Truy Vấn Trong Access : Khái Niệm Cơ Bản, Từ Vựng Và Cú Pháp

2.3.1 Hàm fgetc

Hàm fgetc() được áp dụng để đọc một kí tự từ dữ liệu từfile văn bản.

Cúpháp

intgetc(FILE *fp);

đọc một cam kết tự từ tệp văn bạn dạng được xác định bởi bé trỏFILE *fp. Fp là tham số vẻ ngoài có kiểu bé trỏ. Fp là tác dụng thực hiện nay củahàm fopen();

Vậy nguyên nhân tại sao getc được áp dụng để đọc từng kí tựcủa FILE mà lại có công dụng trả về là int? nguyên nhân đó là khi thực hiện đọc file,ký tự tiến công dấu chấm dứt file (EOF) có mức giá trị int chứ chưa phải char.

Vídụ

Sử dụng hàm getc đọc toàn thể ký từ bỏ được ghi trongfile.txt tương xứng với lấy ví dụ hình số 2.

Codeminh họa

*

Hìnhsố 3: sử dụng hàm fgetc để đọc file

Sử dụng while nhằm kiểm tra kết thúc file (EOF) lúc thựchiện gọi file. Công dụng thực hiện nay in ra được 2 xâu cất chuỗi ký tự.

2.3.2 Hàm fgets

Hàm fgets được thực hiện đọc xâu kí trong tệp tin văn bản tựtheo dòng.

Cúpháp

char*fgets(char *str, int n, file *fp);

Môtả

str: nhỏ trỏ char thực tế là string, thực chất là mảng chars

n:số lượng character lớn nhất khi triển khai đọc, ỏ đây chính là kích kích thước của mảngchar

fp:con trỏ tệp tin

Hàm sẽ triển khai dừng gọi file văn bản khi một trongcác đk sau đấy là đúng.

+ Đọc được n-1 bytes.

+ chạm mặt một loại mới

+ Đọc khi gặp mặt kí tự xong file.

+ Đọc khi lỗi xuất hiện.

Vídụ

Sử dụng hàm fgets nhằm đọc file “file.txt” làm việc ví dụ đượctrình bày tại hình 2.

Code minh họa

*

Hìnhsố 4: sử dụng hàm fgets

Khi thực hiện hàm fgets nhằm đọc nội dung của “file.txt”,sử dụng while để thực hiện đọc từng dòng tài liệu text. Và thực hiện in ra kếtquả bởi việc sử dụng hàm printf.

2.3.3Hàm fscanf

Hàm đọc quý hiếm từ tệp văn bản. Hàm này điện thoại tư vấn là hàm hướngtrường tài liệu (field-oriented function). Đặc trưng của hàm ngày cũng tương tựnhư hàm scanf. Hàm scanf khi đọc dữ liệu từ bàn phím, nếu chạm mặt ký trường đoản cú trống thì lậptức nó coi như kí tự chia cách giữa những trường và ngừng việc đọc tài liệu đâylà vấn đề có sự khác biệt giữa hàm scanf với hàm gets.

Ví dụ Hàm scanf

*

Hìnhsố 5 : Hàm scanf

Trong lấy ví dụ như trên : lúc nhập “Programming C with file”,thì nội dung thông tin in ra là “Programming” điều đó có nghĩa là hàm scanf khigặp lốt trống lập tức hoàn thành việc ghi thông tin.

Nếu gắng hàm scanf băng hàm gets thì văn bản thôngtin sẽ được hiển thị đầy đủ

Code minh họa

*

Hìnhsố 6 : Hàm gets

Tương từ như fscanf được thực hiện để phát âm file, lúc gặpdấu trống thì hàm fscanf dẽ coi nó như dấu ngăn cách giữa những trường. Vày nó làhàm phía trường dữ liệu do vậy nó sẽ ngừng quá trình phát âm 1 trường thông tin(1 cột) khi chạm mặt dấu phân cách giữa các trường.

Ví dụ:

Lưu ý khi phát âm file văn bản, để kiên cố chắn bọn họ sử dụnghàm rewind() để tùy chỉnh thiết lập vị trí con trỏ hiểu file về đầu file.

Xem thêm: Đăng Ký Bản Quyền Video Trên Youtube Mới Nhất, Đăng Ký Bản Quyền Tác Giả Youtube

char str<100>;

FILE * fp;

fp= fopen ("file.txt", "r");

fscanf(fp, "%s",str);

printf("Read String |%s| ", str );

Khi đó hiệu quả in ra chỉ với “Ngon”,

Vậy hàm fscanf nếu đọc các file văn bản có format duoidạng những cột tin tức hay những bảng chứa dữ liệu thì độ hiện tại quả sẽ tương đối tốt.