Home / Blogs / đọc từng dòng trong file c ĐỌC TỪNG DÒNG TRONG FILE C 28/04/2022 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ý dữ liệu tệp văn bạn dạng - lập trình sẵn C : bài 181.Giới thiệuDữ liệu tệp tin văn bản bao gồm một tập hợp các chuỗi kýtự và văn bản được tổ chức triển khai thành dòng. Mỗi dòng tất cả độ dài khác nhau, con số lớnnhất những kí tự trong một dòng là 256 ký kết tự. Mỗi loại được ghi lại bởi ký tự kếtthúc mẫu hay dấu xuống dòng. Vào DOS đó là cặp cam kết tự điều khiển và tinh chỉnh CR(CarriageReturn: nhảy về đầu mẫu , mã số ASCII = 13, ‘ ’) và LF (Line Feed : dancing thẳngxuống loại tiếp theo, mã số ASC II = 10, ‘ ’). Khi lập trình C chỉ việc dùng‘ ’ là đầy đủ để phương pháp 2 dòng.Bạn đang xem: Đọc từng dòng trong file cVí dụ đoạn văn phiên bản sau:Lap Trinh C123Ket ThucKhi kia nếu xét theo cấu tạo của tệp tin văn bản trongDOS đã như sauLap trinh C CR LF 123 CRLF Ket Thuc EOFKhi xây dựng C thì file *.c là một trong những loại file văn bảnđược thực hiện để giữ trữ các đoạn mã công tác C.2.Làm vấn đề với file văn bảnC hỗ trợ 4 hàm tiếp sau đây để thực hiện đọc file 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ới puts.2.1.1 Hàm putc()Hàm putc triển khai ghi một ký kết tự vào một luồn dữ liệugắn cùng với file. Trường hợp nói một cách đơn giản và dễ dàng thì nó tiến hành việc ghi tài liệu mộtcharacter vào một trong những file.Cú pháp:int putc(int ch, file *fp);Mô tả : +ch: là ký tự ước ao ghi vào trong file+fp: bé trỏ trỏ cho Filegiá trị trả về hàm putc: + còn nếu như không lỗi thì trả về đó là ch.+ Nếu bao gồm lỗi : trả về EOF (Có quý giá là 0).Code minh họaHìnhsố 1 : ví dụ về sử dụng hàm fputcKhi chạy chương trình công dụng sẽ ghi tài liệu ra filefile.txt như sau!"#$%&"()*+,-./0123456789:;?ABCDEFGHIJKLMNOPQRSTUVWXYZ<>^_`abcd2.1.2 Hàm puts()Vai trò của hàm puts là ghi xâu kí từ (string) vào luồngdữ liệu, luồng tài liệu này ghắn kết cùng với file. Công dụng hàm thực hiện ghi xâu ký kết tựvào trong tệp tin này.Cúphápcharfputs(char *str, file *fp);str: bé trỏ kiểu dáng char, thực chất nó thiết yếu xâu ký kết tự fp:con trỏ fileHàmtrả về một quý hiếm không âm nếu quy trình ghi file thành côngNếulỗi hàm đang trả về EOF (Có cực hiếm 0).VídụHìnhsố 2 : lấy một ví dụ về áp dụng hàm fputsHàm thực hiện ghi 2 loại “Ngon đần độn lap trinh C” và“Lam viec voi file Van Ban” vào file.txt. Vì thực hiện fopen(“file.txt”,”w+”) dovậy nếu file.txt vẫn tồn tại thì thực hiện xóa tệp tin này cùng tạo mới file. Ngược lạinếu chưa tồn tại file.txt thì sẽ thực hiện tạo bắt đầu file.txt.Khi sử dụng fputs(“Ngon dở người Lap trinh C . ”,fp); thìsẽ ghi xây ký kết tự “Ngon dại dột Lap trinh C” vào file. Kêt thúc mẫu này là thực hiệnxuống dòng.Vậy khi đó dữ liệu sẽ được ghi vào file.txt bên trên 2dòng riêng biệt biệt.2.2 xong file (EOF – over of File)Khi thực hiện đọc file, làm nuốm nào để xác định đượcquá trình phát âm là kết thúc. Tất cả một giải pháp là phụ thuộc vào kí tự đặc trưng để khắc ghi kếtthúc file. Ví dụ+ Kí từ bỏ # được để để khẳng định dòng cuối cùng+ trong DOS thực hiện Ctr-z như là 1 trong những ký tự quan trọng để xác định xong xuôi file. + trong UNIX thực hiện Ctr-d như là 1 ký tự quan trọng đặc biệt để xác định hoàn thành file.Xácđịnh chấm dứt fileĐôi lúc không biết đúng đắn mất thời gian bao thọ đểđọc dữ liệu của một file tính từ thời điểm bắt đầu tiến trình đọc file đến khikết thúc các bước đọc file. Có 2 phương pháp để xác định hoàn thành một file, khi đọc dữ liệufile văn bản, quá trình xử lý sẽ đọc từngkí từ một, lúc đó lập trình viên rất có thể đọc được kí tự đánh dấu chấm dứt file.Các hằng số biểu tượng EOF được tư tưởng trongstdio.h có mức giá trị là -1. Khi thực hiện các hàm đọc dữ 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 gặp mặt kí tựđánh dấu kết thúc file. Vì sinh hoạt đây quá trình đọc được thực hiện cho tới khi gặpkí tự đánh dấu xong xuôi file nên những lập trình viên thường thực hiện while hoặcdo - whilewhile((c= fgetc(fp)) != EOF) Hàm fgetc(fp) trả về một char, vào trường hợpfgetc(fp) == EOF thì dứt quá trình hiểu file.2.3. Các hàm fgetc cùng fgetsSử dụng các hàm fgetc cùng fgets phục vụ cho quy trình đọcdữ liệu từ tệp tin văn bản.Xem thêm: Dạy Bé Tập Viết Bảng Chữ Cái Tiếng Việt, Mẫu Chữ Nét Đứt2.3.1 Hàm fgetc Hàm fgetc() được áp dụng để hiểu một kí tự từ tài liệu từfile văn bản.Cúphápintgetc(FILE *fp);đọc một cam kết tự từ tệp văn phiên bản được xác định bởi con trỏFILE *fp. Fp là tham số bề ngoài có kiểu con trỏ. Fp là hiệu quả thực hiện tại củahàm fopen();Vậy lý do tại sao getc được áp dụng để hiểu từng kí tựcủa FILE và lại có hiệu quả trả về là int? vì sao đó là khi thực hiện đọc file,ký tự tiến công dấu xong xuôi file (EOF) có giá trị int chứ không hẳn 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 một ví dụ hình số 2.Codeminh họaHìnhsố 3: thực hiện hàm fgetc để đọc fileSử dụng while để kiểm tra xong xuôi file (EOF) khi thựchiện gọi file. Kết quả thực hiện nay in ra được 2 xâu chứa chuỗi ký tự.2.3.2 Hàm fgetsHàm fgets được áp dụng đọc xâu kí trong file văn bản tựtheo dòng.Cúphápchar*fgets(char *str, int n, tệp tin *fp);Môtảstr: con trỏ char thực chất là string, thực chất là mảng charsn:số lượng character lớn số 1 khi tiến hành đọc, ỏ đây chính là kích độ lớn của mảngcharfp:con trỏ tệp tin Hàm sẽ thực hiện dừng gọi file văn bạn dạng khi một trongcác đk sau đó là đúng.+ Đọc được n-1 bytes.+ gặp gỡ một chiếc mới+ Đọc khi gặp kí tự xong xuôi file.+ Đọc khi lỗi xuất hiện.VídụSử dụng hàm fgets nhằm đọc file “file.txt” sống ví dụ đượctrình bày tại hình 2. Code minh họaHìnhsố 4: thực hiện hàm fgetsKhi áp dụng hàm fgets nhằm đọc ngôn từ của “file.txt”,sử dụng while để thực hiện đọc từng dòng tài liệu text. Và tiến hành in ra kếtquả bằng việc sử dụng hàm printf.2.3.3Hàm fscanfHàm đọc quý giá từ tệp văn bản. Hàm này gọi 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 lúc đọc dữ liệu từ bàn phím, nếu gặp ký trường đoản cú trống thì lậptức nó coi như kí tự chia cách giữa các trường và hoàn thành việc đọc tài liệu đâylà vấn đề có sự khác biệt giữa hàm scanf cùng hàm gets.Ví dụ Hàm scanfHìnhsố 5 : Hàm scanfTrong 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 vết trống lập tức chấm dứt việc ghi thông tin.Nếu cầm hàm scanf băng hàm gets thì câu chữ thôngtin sẽ tiến hành hiển thị đầy đủCode minh họaHìnhsố 6 : Hàm getsTương tự như fscanf được thực hiện để gọi file, khi gặpdấu trống thì hàm fscanf dẽ coi nó như dấu phân cách giữa các trường. Vị nó làhàm hướng trường dữ liệu do thế nó sẽ kết thúc quá trình phát âm 1 ngôi trường thông tin(1 cột) khi chạm chán dấu chia cách giữa các trường.Ví dụ:Lưu ý khi phát âm file văn bản, để chắc chắn chúng ta sử dụnghàm rewind() để tùy chỉnh vị trí con trỏ gọi file về đầu file.char str<100>;FILE * fp;fp= fopen ("file.txt", "r");fscanf(fp, "%s",str);printf("Read String |%s| ", str );Khi đó kết quả in ra chỉ với “Ngon”, Vậy hàm fscanf nếu đọc những file văn phiên bản có format duoidạng những cột thông tin hay các bảng chứa tài liệu thì độ hiện tại quả sẽ rất tốt.