Cơ sở lập trình - Trường ĐH Thương mại - 13

Mở tệp

Cú pháp: name = fopen(filename, mode);

Trong đó:

filename: là một hằng xâu ký tự thể hiện tên của tệp cùng với đường dẫn của nó trên bộ nhớ ngoài.

mode: là một hằng xâu ký tự thể hiện chế độ xử lý

tệp, quy định cách xử lý tệp đã mở.

Ví dụ

f=fopen(“D:TCbt1.txt”,”w”);

f=fopen(“D:TCbt2.txt”,”r”);


07/2020 Cơ sở lập trình193


Mode

Ý nghĩa

‘”r”

Mở tệp văn bản đã tồn tại để đọc

“w”

Mở tệp văn bản mới để ghi. Nếu tệp đã tồn tại thì nó sẽ bị xóa đi và thay vào đó là một tệp mới

“a”

Mở tệp văn bản đã có và ghi thêm dữ liệu tiếp nối vào cuối tệp. Nếu tệp chưa tồn tại thì một tệp mới được tạo ra

“r+”

Mở tệp văn bản đã có và cho phép cả đọc và ghi

“w+”

Mở tệp văn bản mới cho phép cả đọc và ghi. Nếu tệp đã tồn tại thì nó sẽ bị xóa đi và thay bằng tệp mới

“a+”

Mở tệp văn bản đã có hoặc tạo tệp mới để đọc và ghi thêm dữ liệu tiếp nối vào tệp.

Có thể bạn quan tâm!

Xem toàn bộ 113 trang tài liệu này.

Cơ sở lập trình - Trường ĐH Thương mại - 13


Cơ sở lập trình194


Mode

Ý nghĩa

“rb”

Mở tệp nhị phân đã tồn tại để đọc

“wb”

Mở tệp nhị phân mới để ghi. Nếu tệp đã tồn tại thì nó sẽ bị xóa đi

và thay vào đó là một tệp mới

“ab”

Mở tệp nhị phân đã có và ghi thêm dữ liệu tiếp nối vào cuối tệp. Nếu tệp chưa tồn tại thì một tệp mới được tạo ra

“r+b”

Mở tệp nhị phân đã có và cho phép cả đọc và ghi

“w+b”

Mở tệp nhị phân mới cho phép cả đọc và ghi. Nếu tệp đã tồn tại thì nó sẽ bị xóa đi và thay bằng tệp mới

“a+b”

Mở tệp nhị phân đã có hoặc tạo tệp mới để đọc và ghi thêm dữ liệu

tiếp nối vào tệp.


Cơ sở lập trình 195




Hàm đọc/ghi số nguyên

Hàm đọc/ghi ký tự

Hàm đọc/ghi khối dữ liệu (số thực/struct)


07/2020 Cơ sở lập trình 196

Hàm putw

Dạng hàm: int putw(int n, FILE *f)

Trong đó:

n là một giá trị nguyên

f là con trỏ tệp

Công dụng: ghi một giá trị nguyên n vào tệp f dưới dạng 2 bytes. Nếu thành công thì hàm trả lại giá trị là số nguyên được ghi vào tệp, ngược lại hàm trả lại giá trị là EOF.


07/2020 Cơ sở lập trình 197


Hàm getw

Dạng hàm: int getw( FILE *f) Trong đó:

f là con trỏ tệp

Công dụng: đọc một số nguyên 2 bytes từ tệp f. Nếu thành công thì hàm trả lại giá trị là số nguyên đọc được từ tệp. Nếu gặp lỗi hoặc gặp kết thúc tệp hàm trả lại giá trị là EOF.



07/2020 Cơ sở lập trình 198


Ví dụ: viết chương trình thực hiện việc ghi một dãy số nguyên vào tệp sau đó đọc các số nguyên này từ tệp và in ra màn hình.


07/2020 Cơ sở lập trình 199


#include <stdio.h>

#include <conio.h>

void main()

{

FILE *f;

int i;


/*ghi các số nguyên vào tệp*/ f= fopen(BT.txt,wb); for (i=1;i<100;i++) putw(i,f);

fclose(f);

/* Đọc các số nguyên từ tệp*/

f=fopen(BT.txt,rb);

while ((i = getw(f))!=EOF)

printf(%d,i);

fclose(f);

getch();

}

//quy tắc đọc tệp trong C:

Phải đọc phần tử của tệp trước rồi mới thử xem phần tử đó có phải là EOF hay không.

07/2020 Cơ sở lập trình 200

Hàm fputc

Dạng hàm

int fputc(int ch, FILE *f) Trong đó:

ch: là một giá trị nguyên

f: là con trỏ tệp

Công dụng: hàm này có chức năng ghi vào tệp f một ký tự có mã là m = ch % 256. Nếu thành công thì hàm trả lại giá trị là mã của ký tự được ghi. Ngược lại hàm sẽ trả lại giá trị là EOF.

Lưu ý: Ghi cách khác bằng sử dụng macro

int putc(int ch, FILE *f)


07/2020 Cơ sở lập trình 201


Hàm fgetc

Dạng hàm

int fgetc(FILE *f)

Trong đó:

f :là con trỏ tệp

Công dụng: đọc một ký tự từ tệp f. Nếu thành công hàm trả lại giá trị là mã của ký tự đọc được. Nếu có lỗi hoặc gặp kết thúc tệp thì hàm sẽ trả lại giá trị là EOF

Lưu ý: Cách đọc khác bằng sử dụng macro int getc(FILE *f)

07/2020 Cơ sở lập trình 202


Ví dụ: Chương trình sau thực hiện công việc sao chép dữ liệu từ tệp f1 sang tệp f2


07/2020 Cơ sở lập trình 203




#include <stdio.h>


}

if (f1== NULL)

{

printf(n Tep khong ton tai); getch();

exit(1);

}


f2=fopen(t2,wb);

while ((c=fgetc(f1))!=EOF) fputc(c,f2);

fclose(f1); fclose(f2);

204

#include <conio.h>

void main()

{

char t1[14], t2[14];

FILE *f1,*f2;

int c;

printf(n Nhap ten tep nguon);

gets(t1);

printf(n Nhap ten tep dich);

gets(t2);

f1= fopen(t1,rb);

07/2020 Cơ sở lập trình

Dạng hàm: int fwrite(void *p, int size, int n, FILE *f)

Trong đó:

p: là con trỏ trỏ tới vùng nhớ chứa dữ liệu cần ghi

size: là kích thước của khối dữ liệu

n: là số khối dữ liệu cần ghi

f: là con trỏ tệp.

Công dụng: ghi n khối dữ liệu kích thước size byte từ vùng nhớ p vào tệp f. Hàm trả lại giá trị bằng số khối dữ liệu thực sự ghi được vào tệp

Lưu ý:

Hàm cho phép ghi nhiều khối dữ liệu với yêu cầu các khối dữ liệu này phải cùng kích thước. size là tổng kích thước của n khối dữ liệu và được tính bằng hàm sizeof().


07/2020 Cơ sở lập trình 205


Dạng hàm: int fread(void *p, int size, int n, FILE *f) Trong đó:

p: là con trỏ trỏ tới vùng nhớ chứa dữ liệu đọc được

size: là kích thước của khối dữ liệu theo byte

n: là số khối dữ liệu cần đọc

f: là con trỏ tệp.

Công dụng: đọc n khối dữ liệu kích thước size byte từ tệp f đưa vào vùng nhớ p. Hàm trả về giá trị là số khối dữ liệu thực sự đọc được.

Lưu ý

Giá trị trả về của hàm có thể nhỏ hơn số khối dữ liệu được yêu cầu (cuối tệp hoặc khi có một lỗi nào đó)


07/2020 Cơ sở lập trình 206


Ví dụ:

1. Viết chương trình sử dụng hàm fread và fwrite để đọc/ghi dãy số nguyên lớn(long - 4B)/số thực.

2. Viết chương trình minh họa cách dùng các hàm fwrite và fread để đọc/ ghi một tệp chứa danh sách gồm n sinh viên bao gồm các thông tin hten, que, dtoan, dly,dhoa. (chương trình)


07/2020 Cơ sở lập trình 207



Hàm đọc/ghi theo khuôn dạng

Hàm đọc/ghi ký tự

Hàm đọc/ghi xâu ký tự



07/2020 Cơ sở lập trình 208

..... Xem trang tiếp theo?
⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 01/10/2023