1. Trang chủ
  2. » Thể loại khác

Tài liệu NMLT_C17_TapTin_SeminarNhom5 ppt

37 246 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giới thiệu về tập tin
Trường học Trường Đại Học
Chuyên ngành Công Nghệ Thông Tin
Thể loại Bài tập
Định dạng
Số trang 37
Dung lượng 5,18 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hàm dùng để mở một File, nếu thành công trả về con trỏ kiểu File ứng với File vừa mở, ngược lại trả về NULL.. Nếu thành công trả về mã ký tự được ghi, ngược lại trả về EOF... int getcFI

Trang 2

Bài tập

Một số hàm xử lý khác

Các thao tác xử lý căn bản Phân loại tập tin

Giới thiệu về tập tin

Trang 5

Tập tin văn bản ASCII

Trang 6

Tập tin nhị phân

Trang 9

Khai báo biến tập tin bằng từ khóa FILE được định nghĩa trong <stdio.h> với cấu trúc:

Ví dụ:

FILE *fp; // Khai báo 1 biến con trỏ file

FILE *fp1,*fp2 // Khai báo nhiều biến con trỏ file

FILE Danh sách biến con

trỏ

Trang 10

Hàm dùng để mở một File, nếu thành công trả về con trỏ kiểu File ứng với File vừa mở, ngược lại trả

về NULL

Trong đó:

đường dẫn: chỉ định tên đường dẫn để truy xuất tập tin Nếu trong có

đường dẫn thì sẽ truy xuất trong thư mục hiện hành.

Ví dụ:

fopen (“test.txt”,…) // Không đường dẫn

fopen (“D:\\test\\test.txt”,…) // Có đường dẫn

kiểu là tổ hợp các ký tự mô tả các tùy chọn sau:

fopen (char *đường dẫn, char *kiểu)

Trang 11

“w” Mở tập tin chỉ để ghi vào đĩa (nếu đã có thì

nội dụng tập tin cũ sẽ bị xóa)

“w+” Mở một tập tin mới để đọc, ghi (nếu đã có thì nội

dụng tập tin cũ sẽ bị xóa).

“r” Mở tập tin đã có chỉ để đọc từ đĩa vào bộ nhớ.

“r+” Mở tập tin đã có trên đĩa để đọc hoặc ghi

“a” Mở tập tin để thêm vào (append) cuối tập tin

(không đọc được)

“a+” Mở tập tin để đọc, ghi Nếu tập tin đã có thì

nối thêm Nếu chưa thì tạo tập tin mới.

“b” Mở tập tin kiểu nhị phân (binary)

“t” Mở tập tin kiểu văn bản (text)

Trang 12

printf(“Khong mo duoc tap tin.”);

perror (“Ly do\n”);

Trang 13

Để đóng tất cả các File đang mở ta còn có thể dùng hàm:

int fclose (biến_tập_tin)

Trang 14

Ghi ký tự: (Làm việc với Text & Binary.)

int putc(int ch, FILE *fp);

int fputc(int ch, FILE *fp);

2 hàm này sẽ ghi vào file một ký tự có mã = ch%256 Nếu thành công trả về mã ký tự được ghi, ngược lại trả về

EOF

Trang 15

Đọc ký tự từ File: (Làm việc với Text & Binary )

int getc(FILE *fp);

int fgetc(FILE *fp);

Hàm đọc một ký tự từ File fp, nếu thành công hàm cho

mã của ký tự đọc được, ngược lại trả về EOF

Ví dụ: char c = fgetc (fp);

Trang 16

Ghi chuỗi ký tự: (Làm việc với Text )

Đọc chuổi (dãy) ký tự từ File: (Làm việc với Text )

int fputs(const char *s, FILE *fp);

Hàm sẽ ghi chuỗi s lên File fp nếu thành công trả về ký tự

cuối cùng được ghi vào File, ngược lại trả về EOF

char *fgets(char *s, int n, FILE *fp);

Hàm sẽ đọc một dãy ký tự từ File fp vào vùng nhớ s, kết thúc khi đủ n-1 ký tự hoặc gặp ký tự xuống dòng nếu thành công hàm trả về địa chỉ vùng nhận kết quả, ngược lại trả về

NULL

Trang 17

Ghi dữ liệu theo khuôn dạng: (Làm việc với Text )

Với control chứa địa chỉ của chuỗi điều khiển (giống như

trong hàm printf), là danh sách các đối mà giá trị của chúng cần ghi vào File

Ví dụ:

int fprintf(FILE *fp, const char *control, );

FILE *fp; int a=777

fp = fopen (“taptin.txt”, “wt”);

if (fp!=NULL)

fprintf(fp, “%d\n”,a );

Trang 18

char s[]=“Nguyen Van A”; float dtb = 8.5;

//ghi du lieu len tap tin

Trang 19

Đọc dữ liệu theo khuôn dạng: (Làm việc với Text )

Với control chứa địa chỉ của chuổi điều khiển (giống như trong

hàm scanf), là danh sách các đối chứa kết quả đọc được từ File

Ví dụ:

int fscanf(FILE *fp, const char *control, );

FILE *fp; int a;

fp = fopen (char *tentaptin, “wt”);

if (fp!=NULL && feof!=NULL)

fscanf(fp, “%d”,&a );

Trang 21

Ta có một file text (sinhvien.txt) chứa thông tin các sinh viên, được định dạng như sau:

 < MSSV > -< HoTen > ( < Nam/Nu > )tab < NTNS > tab < DTB >

Trang 22

printf("%s\n(%s)\n%s\n%.2f",sv.MSSV,sv.gioitinh,sv.ntns,sv.dtb);

}

Trang 23

Ghi một số nguyên : (Làm việc với Binary )

Nếu thành công hàm trả về số nguyên được ghi , ngược lại trả

Trang 25

Ghi các mẫu tin lên File:

Với pt là con trỏ trỏ tới vùng nhớ chứa dữ liệu cần ghi, siz e

là kích thước của mẫu tin (byte), n làsố mẫu tin, fp là con trỏ File

Hàm sẽ ghi n mẫu tin kích thước size byte từ vùng nhớ pt lên File fp

Hàm trả về một giá trị = số mẫu tin thực sự được ghi.

int fwrite( void *pt, int size, int n, File *fp);

Trang 26

Đọc các mẫu tin từ File:

Với pt là con trỏ trỏ tới vùng nhớ chứa dữ liệu đọc được, size

là kích thước của mẫu tin (byte), n là số mẫu tin cần đọc, fp

là con trỏ File

Hàm sẽ đọc n mẫu tin kích thước size byte từ File fp vào

vùng nhớ pt

Hàm trả về một giá trị = số mẫu tin thực sự đọc được.

Các hàm fread , fwrite thường dùng để đọc ghi các đối tượng có cùng độ lớn như cấu trúc, số thực

int fread( void *pt, int size, int n, File *fp);

Trang 27

Ví dụ: Ghi cấu trúc của sinh viên

void GhiSV (SV *&sv){

printf("%s\t%s\n",(sv+i)->mssv, (sv+i)->ten);

fwrite(sv,sizeof(SV),n,f);

fclose(f); }

Trang 28

Ví dụ: Đọc cấu trúc sinh viên

buffer = (SV*) malloc (1*sizeof(SV));

result = 0; int count=0;

Trang 29

if(result == l/sizeof(SV))

printf("Thanh cong, doc duoc %d cau truc\n", result);

else {

printf("Qua trinh doc loi\n");

printf("Doc duoc %d cau truc\n", result);

} free (buffer);

}

fclose (f);

}

Trang 30

Thanh cong tra ve 0;

Vd: remove(“C:\\WINDOWS\\regedit.exe”);

 Đổi tên tập tin

 ten_tap_tin_cu: khai báo đường dẫn như fopen

 ten_tap_tin_moi: không cần đường dẫn, mặc định cùng

chung thư mục với tập tin cũ

Trả về 0 nếu thành công

Vd: rename(“C:\\WINDOWS\\regedit.exe”,”hehe.txt”);

int rename(“ten_tap_tin_cu”, “ten_tap_tin_moi”);

int remove(“ten_tap_tin_can_xoa”);

Trang 31

 Làm sạch vùng đệm của các File đang mở

Nếu thành công hàm trả về giá trị số tệp đang mở, ngược lại trả vè EOF

 Làm sạch vùng đệm File fp

Thành công cho giá trị 0, ngược lại cho giá trị EOF

int fflush(FILE *fp);

int flushall(void);

Trang 32

 In chuổi s và thông báo lỗi hệ thống

 Dùng kiểm tra lỗi thao tác trên File fp

Hàm trả về giá trị khác 0 nếu có lỗi, ngược lại trả về 0

int ferror(FILE *fp);

void perror(const char *s);

 Xoá một File trên đĩa

Nếu thành công hàm cho giá trị 0, ngược lại trả về EOF

int unlink(const char *filename);

Trang 33

 Dời con trỏ tập tin đi so_byte tính từ vt_bat_dau.

 Chuyển con trỏ chỉ vị của File fp về đầu File

void rewind(FILE *fp);

int fseek(FILE *fp, long so_byte, int vt_bat_dau);

Trang 34

Trả về vị trí hiện tại của con trỏ chỉ vị (byte) được tính từ 0 Nếu có lỗi hàm trả về -1L

long ftell(FILE *fp);

Trang 35

 Quay lại vị trí đánh dấu sau khi

đánh dấu bằng hàm fgetpos

 Đánh dấu trên tập tin

“stdio.h”

*vitri là biến con trỏ lưu vị trí

đánh dấu trên tập tin

fgetpos(FILE* f, fpos_t *vitri);

fsetpos(FILE* f, fpos_t *vitri)

Trang 36

1 Viết chương trình đọc tập tin văn bản có cấu trúc là một

ma trận vuông (n*n) :

 Dòng đầu lưu giá trị n

 Các dòng tiếp theo là mỗi dòng của ma trận Hai số kề

nhau được lưu bởi khoảng trắng

2 Viết chương trình ghép 2 tập tin văn bản (nội dụng tập

tin thứ hai ghép được ghép vào tập tin thứ nhất).

Trang 37

3 Viết chương trình đề nhập thêm dữ liệu cho mẫu tin của

một sinh viên vào cuối tập tin nhị phân chỉ chứa mẫu tin sinh viên.

4 Viết chương trình đọc dữ liệu từ tập tin chứa các mẫu tin

là thông tin của sinh viên Sau đó sắp xếp lại các mẫu tin theo các thông tin.

5 Viết chương trình tìm xem trong tập tin gồm các mẫu tin

SINHVIEN xem có sinh viên nào có MSSV là một mã

đã cho trước không

6 Viết chương trình sửa ngày sinh của một sinh viên có

MSSV được cho trước.

Ngày đăng: 11/12/2013, 21:15

🧩 Sản phẩm bạn có thể quan tâm

w