Con trăn fscanf
Như các bạn đã biết print nghĩa là in, scan là quét hay ta gọi trong này là để nhập. Vì sao chúng lại có chữ fđằng sau để thành printf và scanf ? Show Chữ f này có nghĩa là định dạng (định dạng). Như các bạn thấy chúng ta nhập hoặc xuất giá trị của các biến đều có định dạng % gì đó ví dụ %d là số nguyên, %f là số thực,… và chữ f đây chính là có nghĩa như thế nào Có rất nhiều hàm phục vụ cho công việc đọc file trong C. Trong bài hướng dẫn này, Lập trình không khó sẽ hướng dẫn bạn cách làm việc với tệp sử dụng ngôn ngữ lập trình C. Một số tệp ghi hàm đọc trong C có thể được kể đến như là. fprintf(), fscanf(), fread(), fwrite(), fseek … và một số hàm khác nữaNếu bạn đang tìm cách đọc ghi file trong C++ thì hãy đọc bài viết này nhé NỘI DUNG BÀI VIẾT
Tại sao chúng ta cần đến tệp?
File typeTrước khi làm việc với file, bạn nên biết về 2 loại file khác nhau sau đây
1. File văn bản – file văn bảnFile văn bản là file normal có đuôi là. txt. Những tập tin này bạn có thể dễ dàng tạo ra bằng cách sử dụng các trình soạn thảo văn bản thông dụng như Notepad, Notepad++, Sublime Text,… Khi bạn mở tệp này bằng trình soạn thảo văn bản nói trên, bạn sẽ thấy văn bản ngay lập tức và có thể dễ dàng thao tác chỉnh sửa, xóa, thêm nội dung của tệp này Kiểu tệp này thuận tiện cho chúng tôi trong việc sử dụng hàng ngày, nhưng nó sẽ mất bảo mật và cần nhiều bộ nhớ để lưu trữ hơn 2. File nhị phân – Tệp nhị phânFile nhị phân thường có đuôi mở rộng là. thùng rác Thay vì lưu trữ dưới dạng văn bản thuần thúy, các tệp này được lưu dưới dạng nhị phân, chỉ bao gồm các số 0 và 1. Bạn cũng sẽ thấy các con số này nếu cố mở nó bằng 1 trình soạn thảo văn bản kể trên Loại tệp này giúp lưu trữ được dữ liệu với kích thước lớn hơn, không thể đọc bằng các trình soạn thảo văn bản thông thường và thông tin lưu trữ ở loại tệp được bảo mật hơn so với tệp văn bản Thao tác với tập tinTrong ngôn ngữ lập trình C, có một số thao tác chính khi làm việc với tệp, bao gồm cả tệp văn bản và tệp nhị phân
Thao tác với tệp trên ngôn ngữ CKhi làm việc với tệp, bạn cần khai báo 1 con trỏ kiểu 0 1 2
FILE *fptr;
Thao tác mở tệpĐể đọc tệp ghi trong C cũng như trong mọi ngôn ngữ lập trình, công việc đầu tiên bạn cần làm là mở tệp mà bạn muốn làm việc. Trong ngôn ngữ lập trình C, chúng ta có thể mở tệp bằng cách sử dụng hàm 0 1 2
fptr = fopen("fileopen","mode")
Trong đó Ví dụ 0 1 2 3 4 5 6
fptr = fopen("E. \\c chương trình\\chương trình mới. txt","w");
// or
fptr = fopen("E. \\c chương trình\\chương trình cũ. bin","rb");
Tham số của “mode”Dưới đây là các giá trị có thể có của tham số Thao tác đóng fileKhi công việc hoàn tất với tệp tin, kể cả tệp nhị phân hay tệp văn bản. You must close file after doing work with it done Việc đóng tập tin đang mở có thể được thực hiện bằng cách sử dụng hàm 0 1 2
fclose(fptr); //Con trỏ FILE trỏ tới file cần được đóng.
Đọc/Ghi file văn bản trong CChúng ta sẽ học cách đọc file trong C với file văn bản trước. Với tệp nhị phân, bạn kéo xuống bên dưới để xem tiếp Để làm việc với tệp văn bản, chúng ta sẽ sử dụng VD1. Ghi tệp sử dụng fprintf()0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
#bao gồm #bao gồm
int chính() { int num; FILE *fptr; fptr = fopen("C:\\program.txt","w");
if(fptr == NULL) { printf("Lỗi. "); thoát(1); }
printf("Nhập số. "); scanf("%d",&num);
fprintf(fptr,"%d",num); fclose(fptr);
return 0; }
Chương trình nhận số Sau khi chạy chương trình này, bạn sẽ thấy tệp văn bản VD2. Read file using fscanf()0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#bao gồm #bao gồm
int chính() { int num; FILE *fptr;
nếu ((fptr = fopen("C:\\program.txt","r")) == NULL){ printf("Lỗi. đang mở tệp");
// Chương trình thoát nếu con trỏ tệp trả về NULL. thoát(1); }
fscanf(fptr,"%d", &num);
printf("Giá trị của n=%d", num); fclose(fptr);
return 0; }
Chương trình này sẽ đọc giá trị số được lưu trong tệp Đọc/Ghi file nhị phân trong CCác hàm Ghi file nhị phânĐể ghi tệp nhị phân, bạn cần sử dụng hàm 0 1 2
fwrite(address_data,size_data,numbers_data,pointer_to_file);
VD3. Ghi file nhị phân sử dụng fwrite()0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
#bao gồm #bao gồm
struct threeNum { int n1, n2, n3; };
int chính() { int n; struct threeNum num; FILE *fptr;
nếu ((fptr = fopen("C:\\program.bin","wb")) == NULL){ printf("Lỗi. đang mở tệp");
// Chương trình thoát nếu con trỏ tệp trả về NULL. thoát(1); }
cho(n = 1; n < 5; ++n) { num. n1 = n; num. n2 = 5 * n; num. n3 = 5 * n + 1; fwrite(&num, sizeof(struct threeNum), 1, fptr); } fclose(fptr);
return 0; }
Trong VD3 này, chương trình sẽ tạo ra một tệp Trong vòng lặp, các số được ghi vào tệp sử dụng hàm
Cuối cùng, chúng ta đóng file sử dụng Read file nhị phânHàm 0 1 2
sợ(address_data,size_data,numbers_data,pointer_to_file);
Ví dụ đọc file nhị phân sử dụng fread()0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
#bao gồm #bao gồm
struct threeNum { int n1, n2, n3; };
int chính() { int n; struct threeNum num; FILE *fptr;
nếu ((fptr = fopen("C:\\program.bin","rb")) == NULL){ printf("Lỗi. đang mở tệp");
// Chương trình thoát nếu con trỏ tệp trả về NULL. thoát(1); }
cho(n = 1; n < 5; ++n) { fread(&num, sizeof(struct threeNum), 1, fptr); printf("n1. %d\tn2. %d\tn3. %d", num. n1, num. n2, num. n3); } fclose(fptr);
return 0; }
Trong ví dụ này, bạn đọc tệp Một số ví dụ về đọc tệp ghi trong CTrong phần này, mình sẽ trình bày 2 ví dụ về đọc ghi file trong C, bao gồm các bài đọc ghi file sau
Ghi vào file một câu văn bản0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#bao gồm #include /* Đối với hàm exit() */ int chính() { ký tự câu[1000]; FILE *fptr;
fptr = fopen("program.txt", "w"); if(fptr == NULL) { printf("Lỗi. "); thoát(1); }
printf("Nhập câu. \n"); được(câu);
fprintf(fptr,"%s", sentence); fclose(fptr);
return 0; }
Run try 0 1 2 3
nhập câu Tôi tuyệt vời và các tập tin cũng vậy
Read data text from file0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#bao gồm #include // Đối với hàm exit() int chính() { char c[1000]; FILE *fptr;
nếu ((fptr = fopen("program.txt", "r")) == NULL) { printf("Lỗi. đang mở tệp"); // Chương trình thoát nếu con trỏ tệp trả về NULL. thoát(1); }
// đọc văn bản cho đến dòng mới fscanf(fptr,"%[^\n]", c);
printf("Dữ liệu từ tệp. \n%s", c); fclose(fptr);
return 0; }
Giả sử tập tin văn bản 0 1 2 3 4
Lập trình C thật tuyệt vời Tôi yêu lập trình C Bạn khỏe không?
Run try 0 1 2
Dữ liệu từ tệp file. C lập trình thật tuyệt vời.
Tham khảo
Nguyễn Văn Hiếu Sáng lập cộng đồng Lập Trình Không Khó với mong muốn giúp đỡ các bạn trẻ trên con đường trở thành những lập trình viên tương lai. Tất cả những gì tôi viết ra đây chỉ đơn giản là cơ sở thích ghi lại các kiến thức mà tôi tích lũy được |