Giới thiệu Biến và con trỏ tập tin Các thao tác trên tập tin Truy cập tập tin văn bản NỘI DUNG Truy cập tập tin văn bản Truy cập tập tin nhị phân... Kiểu tập tin: Dữ liệu lưu trữ th
Trang 1LẬP TRÌNH CƠ BẢN
KIỂU TẬP TIN (FILE)
LẬP TRÌNH CƠ BẢN
Trang 2Giới thiệu
Biến và con trỏ tập tin
Các thao tác trên tập tin
Truy cập tập tin văn bản
NỘI DUNG
Truy cập tập tin văn bản
Truy cập tập tin nhị phân
Trang 3Kiểu tập tin: Dữ liệu lưu trữ thành một file
trên hệ thống
Các kiểu tập tin: 3 kiểu
Tập tin văn bản (Text File)
GIỚI THIỆU
Tập tin định kiểu (Typed File)
Tập tin không định kiểu (Untyped File)
Trang 4Biến tập tin: là một biến thuộc kiểu dữ liệu
tập tin dùng để đại diện cho một tập tin.
Con trỏ tập tin:
điểm, sẽ có một vị trí của tập tin mà tại đó việc
BIẾN VÀ CON TRỎ TẬP TIN
điểm, sẽ có một vị trí của tập tin mà tại đó việc
đọc/ghi thông tin sẽ xảy ra
đó và đặt tên nó là con trỏ tập tin
thêm một phần tử về phía cuối tập tin Sau phần tử
dữ liệu cuối cùng của tập tin là dấu kết thúc tập tin
Trang 5CÁC THAO TÁC TRÊN TẬP TIN
xử lý dữ Khai báo
biến tập tin
1 Mở tập tin
bằng hàm fopen()
2
xử lý dữ liệu của tập tin bằng các hàm đọc/ghi dữ liệu
3 Đóng tập tin bằng
hàm fclose()
4
Trang 6Khai báo biến tập tin
Trang 7Mở tập tin
Cú pháp:
FILE *fopen(char *Path, const char *Mode)
Path: chuỗi chỉ đường dẫn đến tập tin trên đĩa
CÁC THAO TÁC TRÊN TẬP TIN
Type: chuỗi xác định cách thức mà tập tin sẽ mở
Các giá trị có thể của Mode:
Trang 8Mở tập tin
CÁC THAO TÁC TRÊN TẬP TIN
Trang 9Mở tập tin
CÁC THAO TÁC TRÊN TẬP TIN
Trang 10/* Các câu lệnh để thao tác với tập tin*/
/* Đóng tập tin*/
}
Trang 11Đóng tập tin
Cú pháp:
int fclose(FILE *f):
=0 báo rằng việc đóng tập tin thành công
=EOF nếu có xuất hiện lỗi
CÁC THAO TÁC TRÊN TẬP TIN
=EOF nếu có xuất hiện lỗi
int fcloseall():
=tổng số các tập tin được đóng lại
= EOF Nếu không thành công
Trang 12Kiểm tra đến cuối tập tin hay chưa?
Cú pháp: int feof(FILE *f)
= EOF nếu cuối tập tin được chạm tới,
=0 trong trường hợp ngược lại
CÁC THAO TÁC TRÊN TẬP TIN
Cú pháp: void rewind(FILE *f)
Trang 13Ghi dữ liệu lên tập tin văn bản:
int putc(int c, FILE *f): Ghi một ký tự lên một
tập tin văn bản đang được mở để làm việc.
int fputs(const char *buffer, FILE *f) : ghi một
chuỗi ký tự chứa trong vùng đệm lên tập tin
TRUY CẬP TẬP TIN VĂN BẢN
chuỗi ký tự chứa trong vùng đệm lên tập tin
văn bản.
fprintf(FILE *f, const char *format, varexpr):
ghi dữ liệu có định dạng lên tập tin văn bản.
Trang 14Đọc dữ liệu từ tập tin văn bản:
int getc(FILE *f): đọc dữ liệu từ tập tin văn bản
đang được mở để làm việc.
char *fgets(char *buffer, int n, FILE *f): đọc
một chuỗi ký tự từ tập tin văn bản đang được
TRUY CẬP TẬP TIN VĂN BẢN
một chuỗi ký tự từ tập tin văn bản đang được
mở ra và liên kết với con trỏ f cho đến khi đọc
đủ n ký tự hoặc gặp ký tự xuống dòng ‘\n’ hay
gặp ký tự kết thúc EOF.
fscanf(FILE *f, const char *format, varlist): đọc
dữ liệu từ tập tin văn bản vào danh sách các
Trang 15Ví dụ 1: Viết chương trình ghi chuỗi ký tự lên tập tin văn
bản D:\\THIDU.txt
#include<stdio.h>
#include<conio.h>
int main() {
fputs("Bai 1: Nhap cac so nguyen duong.",f);
fclose(f);
} getch();
return 0;
Trang 16Ví dụ 2: Viết chương trình ghi chuỗi ký tự lên tập tin văn
ch=fgetc(f1);
}fcloseall();
}
Trang 17Ghi dữ liệu lên tập tin nhị phân - Hàm
fwrite() :
size_t fwrite(const void *ptr,
size_t size, size_t n, FILE *f)
ptr: con trỏ chỉ đến vùng nhớ chứa thông tin cần ghi
TRUY CẬP TẬP TIN NHỊ PHÂN
lên tập tin
Trang 18Đọc dữ liệu từ tập tin nhị phân - Hàm
fread() :
size_t fread(const void *ptr, size_t size, size_t n, FILE *f)
ptr: con trỏ chỉ đến vùng nhớ sẽ nhận dữ liệu từ tập tin
TRUY CẬP TẬP TIN NHỊ PHÂN
từ tập tin Giá trị này bằng n hay nhỏ hơn n nếu đã
Trang 19Di chuyển con trỏ tập tin - Hàm fseek():
int fseek(FILE *f, long offset, int whence)
trí trước đó Phần tử đầu tiên là vị trí 0
TRUY CẬP TẬP TIN NHỊ PHÂN
trí trước đó Phần tử đầu tiên là vị trí 0
0 ( SEEK_SET): Vị trí đầu tập tin
1 (SEEK_CUR): Vị trí hiện tại của con trỏ tập tin
2 (SEEK_END): Vị trí cuối tập tin
Trang 20Bài 1 Thực hiện biên soạn và chạy thử nghiệm Ví dụ 1
Trang 22Bài 3: Thực hiện biên soạn và chạy thử nghiệm chương
trình: Mỗi sinh viên cần quản lý ít nhất 2 thông tin: mã
sinh viên và họ tên Viết chương trình cho phép lựa chọn
các chức năng: nhập danh sách sinh viên từ bàn phím rồi
ghi lên tập tin SinhVien.dat, đọc dữ liệu từ tập tin
SinhVien.dat rồi hiển thị danh sách lên màn hình, tìm
BÀI TẬP THỰC HÀNH
SinhVien.dat rồi hiển thị danh sách lên màn hình, tìm
kiếm họ tên của một sinh viên nào đó dựa vào mã sinh
viên nhập từ bàn phím
Trang 24void WriteFile(char *FileName)
Trang 25void ReadFile(char *FileName)
Trang 26void Search(char *FileName)
Trang 28Bài 4: Viết chương trình giải và biện luận Phương trình
bậc hai và ghi kết quả vào file
Bài 5 Viết chương trình nhập vào một dãy n số thực a[0],
a[1], , a[n-1], sắp xếp dãy số theo thứ tự từ lớn đến nhỏ
Ghi dãy số sau khi sắp xếp vào file
BÀI TẬP THỰC HÀNH