Bài giảng Lập trình - Bài: Chuỗi ký tự và tập tin - Phạm Minh Tuấn

Việc lập trình với tập tin nhằm để lưu trữ dữ liệu của chương trình vào bộ nhớ phụ và truy xuất trở lại dữ liệu này khi cần thiết. Thông thường dữ liệu lưu trữ là các tập tin trên đĩa.

Bài giảng Lập trình - Bài: Chuỗi ký tự và tập tin - Phạm Minh Tuấn trang 1

Trang 1

Bài giảng Lập trình - Bài: Chuỗi ký tự và tập tin - Phạm Minh Tuấn trang 2

Trang 2

Bài giảng Lập trình - Bài: Chuỗi ký tự và tập tin - Phạm Minh Tuấn trang 3

Trang 3

Bài giảng Lập trình - Bài: Chuỗi ký tự và tập tin - Phạm Minh Tuấn trang 4

Trang 4

Bài giảng Lập trình - Bài: Chuỗi ký tự và tập tin - Phạm Minh Tuấn trang 5

Trang 5

Bài giảng Lập trình - Bài: Chuỗi ký tự và tập tin - Phạm Minh Tuấn trang 6

Trang 6

Bài giảng Lập trình - Bài: Chuỗi ký tự và tập tin - Phạm Minh Tuấn trang 7

Trang 7

Bài giảng Lập trình - Bài: Chuỗi ký tự và tập tin - Phạm Minh Tuấn trang 8

Trang 8

Bài giảng Lập trình - Bài: Chuỗi ký tự và tập tin - Phạm Minh Tuấn trang 9

Trang 9

Bài giảng Lập trình - Bài: Chuỗi ký tự và tập tin - Phạm Minh Tuấn trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 38 trang Danh Thịnh 08/01/2024 3980
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Lập trình - Bài: Chuỗi ký tự và tập tin - Phạm Minh Tuấn", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình - Bài: Chuỗi ký tự và tập tin - Phạm Minh Tuấn

Bài giảng Lập trình - Bài: Chuỗi ký tự và tập tin - Phạm Minh Tuấn
Kỹ thuật lập trình 
Trình bày: ; Email: @fit.hcmus.edu.vn 
Giới thiệu về các dạng tập tin 
Hệ thống nhập xuất trong lập trình 
Lập trình thao tác trên tập tin văn bản thô 
Sử dụng tập tin văn bản thô để lưu trữ 
dữ liệu của chương trình 
Các vấn đề tìm hiểu mở rộng kiến thức 
nghề nghiệp 
Thuật ngữ và bài đọc thêm tiếng Anh 
11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 2 
• Việc lập trình với tập tin nhằm để lưu trữ 
dữ liệu của chương trình vào bộ nhớ phụ 
và truy xuất trở lại dữ liệu này khi cần 
thiết. Thông thường dữ liệu lưu trữ là các 
tập tin trên đĩa. 
• Về mặt kỹ thuật lập trình, người ta xem có 
hai dạng tập tin chính là tập tin văn bản 
thô và tập tin tin nhị phân. 
11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 4 
• Đây là dạng tập tin văn bản có cấu trúc đơn giản 
và thông dụng nhất, có thể xem nội dung và sửa 
chữa bằng các lệnh của hệ điều hành hay những 
chương trình soạn thảo văn bản đơn giản. 
• Thông thường được lưu trữ trên đĩa dưới dạng 
.txt. 
• Hầu hết mã nguồn chương trình hiện nay đều lưu 
trữ trên đĩa dưới dạng tập tin văn bản thô. 
• Nội dung gồm các ký tự 8-bit 
• Các ký tự thấy được có mã từ 0x20 trở lên. 
• Các ký tự điều khiển có mã nhỏ hơn 0x20. 
11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 5 
• Có thể lưu các ký tự Unicode hay ký tự 
nhiều byte (multi-byte character). 
• Hai cấu trúc văn bản thô mở rộng thông 
dụng nhất là: 
– Unicode text: lưu các ký tự UTF-16. 
– UTF-8: lưu các ký tự độ dài biến động từ 1 
đến 4 byte. 
11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 6 
• Là các tập tin không có cấu trúc như tập 
tin văn bản thô. 
• Mỗi tập tin bao gồm một dãy các byte dữ 
liệu, gồm 2 dạng: 
– Các byte tuần tự không liên quan nhau về 
mặt cấu trúc tổ chức tập tin. 
– Được cấu trúc hóa tùy theo qui ước của phần 
mềm tạo ra tập tin. 
11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 7 
• Bao gồm 3 bước chính: 
– Bước 1. Mở tập tin, người lập trình cần phải đưa 
vào đường dẫn và tên tập tin chính xác. 
– Bước 2. Sử dụng tập tin (sau khi đã mở tập tin 
thành công). 
• Đọc dữ liệu từ tập tin đưa vào biến bộ nhớ trong 
chương trình. 
• Ghi dữ liệu từ biến bộ nhớ trong chương trình lên 
tập tin. 
– Bước 3. Đóng tập tin (sau khi đã hoàn tất các 
công việc cần thiết). 
11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 9 
11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 10 
Mở tập tin có tên (đường dẫn) là chứa trong 
filename với kiểu mở mode (xem bảng). 
Thành công: con trỏ kiểu cấu trúc FILE 
Thất bại: NULL (sai quy tắc đặt tên tập 
tin, không tìm thấy ổ đĩa, không tìm thấy 
thư mục, mở tập tin chưa có để đọc, ) 
FILE* fp = fopen(“taptin.txt”, “rt”); 
if (fp == NULL) 
 printf(“Khong mo duoc tap tin!”); 
FILE *fopen(const char *filename, const char *mode) 
11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 11 
Đối số Ý nghĩa 
b Mở tập tin kiểu nhị phân (binary) 
t Mở tập tin kiểu văn bản (text) (mặc định) 
r Mở tập tin chỉ để đọc dữ liệu từ tập tin. Trả về 
NULL nếu không tìm thấy tập tin. 
w Mở tập tin chỉ để ghi dữ liệu vào tập tin. Tập 
tin sẽ được tạo nếu chưa có, ngược lại dữ liệu 
trước đó sẽ bị xóa hết. 
a Mở tập tin chỉ để thêm (append) dữ liệu vào 
cuối tập tin. Tập tin sẽ được tạo nếu chưa có. 
r+ Giống mode r và bổ sung thêm tính năng ghi 
dữ liệu và tập tin sẽ được tạo nếu chưa có. 
w+ Giống mode w và bổ sung thêm tính năng đọc. 
a+ Giống mode a và bổ sung thêm tính năng đọc. 
• Thực hiện đọc/ghi dữ liệu theo các cách sau: 
– Nhập/xuất theo định dạng 
• Hàm: fscanf, fprintf 
• Chỉ dùng với tập tin kiểu văn bản. 
– Nhập/xuất từng ký tự hay dòng lên tập tin 
• Hàm: getc, fgetc, fgets, putc, fputs 
• Chỉ nên dùng với kiểu văn bản. 
– Đọc/ghi trực tiếp dữ liệu từ bộ nhớ lên tập tin 
• Hàm: fread, fwrite 
• Chỉ dùng với tập tin kiểu nhị phân. 
11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 12 
11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 13 
Ghi dữ liệu có chuỗi định dạng fnt (giống 
hàm printf) vào stream fp. 
Nếu fp là stdout thì hàm giống printf. 
Thành công: trả về số byte ghi được. 
Thất bại: trả về EOF (có giá trị là -1, được 
định nghĩa trong STDIO.H, sử dụng trong 
tập tin có kiểu văn bản) 
int i = 2912; int c = ‘P’; float f = 17.06; 
FILE* fp = fopen(“taptin.txt”, “wt”); 
if (fp != NULL) 
 fprintf(fp, “%d %c %.2f\n”, i, c, f); 
int fprintf(FILE *fp, char *fnt, ) 
11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 14 
Đọc dữ liệu có chuỗi định dạng fnt (giống 
hàm scanf) từ stream fp. 
Nếu fp là stdin thì hàm giống printf. 
Thành công: trả về số thành phần đọc và 
lưu trữ được. 
Thất bại: trả về EOF. 
int i; 
FILE* fp = fopen(“taptin.txt”, “rt”); 
if (fp != NULL) 
 fscanf(fp, “%d”, &i); 
int fscanf(FILE *fp, char *fnt, ) 
11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 15 
Đọc một ký tự từ stream fp. 
getc là macro còn fgetc là phiên bản hàm 
của macro getc. 
Thành công: trả về ký tự đọc được sau khi 
chuyển sang số nguyên không dấu. 
Thất bại: trả về EOF khi kết thúc stream fp 
hoặc gặp lỗi. 
char ch; 
FILE* fp = fopen(“taptin.txt”, “rt”); 
if (fp != NULL) 
 ch = getc(fp); //  ch = fgetc(fp); 
int getc(FILE *fp) và int fgetc(FILE *fp) 
11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 16 
Đọc một dãy ký tự từ stream fp vào vùng 
nhớ str, kết thúc khi đủ n-1 ký tự hoặc gặp 
ký tự xuống dòng. 
Thành công: trả về str. 
Thất bại: trả về NULL khi gặp lỗi hoặc gặp 
ký tự EOF. 
char s[20]; 
FILE* fp = fopen(“taptin.txt”, “rt”); 
if (fp != NULL) 
 fgets(s, 20, fp); 
int fgets(char *str, int n, FILE *fp) 
11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 17 
Ghi ký tự ch vào stream fp. 
putc là macro còn fputc là phiên bản hàm 
của macro putc. 
Thành công: trả về ký tự ch. 
Thất bại: trả về EOF. 
FILE* fp = fopen(“taptin.txt”, “rt”); 
if (fp != NULL) 
 putc(‘a’, fp); // hoặc fputc(‘a’, fp); 
int putc(int ch, FILE *fp) và int fputc(in ch, FILE *fp) 
11/10/2012 Khoa CNTT - ĐH Khoa học tự nhiên 18 
Ghi chuỗi ký tự str vào stream fp. Nếu fp là 
stdout th

File đính kèm:

  • pdfbai_giang_lap_trinh_bai_chuoi_ky_tu_va_tap_tin_pham_minh_tua.pdf