MỘT SỐ HÀM NHẬP XUẤT CẤ P

Một phần của tài liệu Ngôn ngữ C 2 (Trang 52 - 57)

Tóm tắt các hàm:

1. creat dùng để tạo một tập tin mới có thể theo kiểu văn bản hoặc nhị phân. 2. _creat dùng để tạo một tập tin mới theo kiểu nhị phân.

3. open dùng để mở tập tin mới hoặc tập tin đã tồn tại để nhập xuất. 4. _open dùng để mở tập tin đã tồn tại để nhập xuất.

5. close và _close dùng để đóng tập tin.

6. chmod dùng để thay đổi thuộc tính của tập tin. 7. _chmode thay đổi thuộc tính tập tin theo kiểu DOS. 8. perror dùng để thông báo lỗi.

9. write dùng để ghi một dãy các byte.

10. read dùng để đọc một dãy các byte trên tập tin. 11. lseek dùng để di chuyển con trỏ chỉ vị.

1. Hàm creat:

- Cú pháp:

int creat(const char *fname, int amode);

- Ý nghĩa:

Tạo ra một tập tin mới có tên cho bởi đối fname và có thuộc tính cho bởi đối amode. Trong trường hợp tập tin đã tồn tại:

+ Nếu tập tin để ghi, thì nó bị xoá. + Nếu tập tin chỉ đọc, thì nó bị lỗi

khi có lỗi, hàm trả về -1. Khi thành công hàm trả về handle của tập tin. Handle này có thể dùng trong hàm write để ghi thông tin lên tập tin.

Kiểu ghi (văn bản hay nhị phân) được xác định bởi biến fmode (fcntl.h và stdlib.h). Giá trị mặc định của fmode là O_TEXT (kiểu văn bản). Muốn ghi theo kiểu nhị phân thì ta cần xác định lại fmode (trước khi dùng hàm creat) bằng lệnh:

fmode = O_BINARY; - Giải thích:

fname: là tên tập tin cần tạo.

amode: là thuộc tính tập tin. Nó có thể là:

+ S_IREAD: Tập tin chỉ đọc. Sau này không thể xoá, sửa, bổ sung. + S_IWRITE: Tập tin chỉ ghi. Sau này có thể xoá, sửa, bổ sung.

2. Hàm _creat:

- Cú pháp:

int _creat(const char *fname,int attrib);

- Ý nghĩa:

Tạo ra một tập tin mới có tên cho bởi đối fname và có thuộc tính cho bởi đối attrib. Trong trường hợp tập tin đã tồn tại:

+ Nếu tập tin để ghi, thì nó bị xoá. + Nếu tập tin chỉ đọc, thì nó bị lỗi

khi có lỗi, hàm trả về -1. Khi thành công hàm trả về handle của tập tin. Handle này có thể dùng trong hàm write để ghi thông tin lên tập tin. Kiểu ghi luôn luôn là nhị phân.

- Giải thích:

fname: là tên tập tin cần tạo.

attrib: là thuộc tính tập tin. Nó có thể là:

FA_RDONLY: Tập tin chỉ đọc, không thể xóa hoặc sửa chữa. FA_ARCH: Tập tin để ghi.

FA_HIDDEN: Tập tin ẩn, không hiện trong lệnh DIR của DOS. - Chú ý: (adsbygoogle = window.adsbygoogle || []).push({});

Giá trị của attrib có thể là tổ hợp của các giá trị trên, ví dụ: attrib = FA_HIDDEN | FA_ARCH thì thuộc tính tập là ẩn và có thể ghi. - Ví dụ: #include<dos.h> #include<fcntl.h> int a[3]={2,3,4}; void main( ) { int fd; fd = _creat("vb.txt",FA_ARCH); write(fd,a,6); close(fd); } 3. Hàm open: - Cú pháp:

int open(const char *fname, int access [, unsigned amode]);

- Ý nghĩa:

Mở tập tin đã có hoặc xây dựng tập tin mới để đọc ghi. - Giải thích:

fname: Tên tập tin cần mở.

access: Xác định quyền và kiểu truy nhập, nó có thể nhận các giá trị sau (định nghĩa trong thư viện fcntl.h).

Giá trị Ý nghĩa

O_RDONLY Mở tập tin để đọc dữ liệu O_RWONLY Mở tập tin để ghi dữ liệu O_RDWR Đọc/ghi

O_APPEND Ghi bổ sung

O_TRUNC Nếu tập tin đã tồn tại rồi thì độ dài sẽ bị cắt về 0 Thuộc tính của tập tin vẫn không thay đổi O_TEXT Kiểu nhập xuất văn bản

O_BINARY Kiểu nhập xuất nhị phân

O_CREAT Nếu tập tin chưa có thì nó sẽ được tạo (Khi đó cần đưa thêm đối thứ 3)

amode: Dùng để xác định thuộc tính của tập tin mới được tạo, nó thường nhận 2 giá trị sau:

S_IREAD: Tập tin chỉ đọc, không thể xóa hoặc sửa chữa. S_IWRITE: Tập tin có thể ghi.

- Giá trị trả về của hàm:

- Chú ý:

+ Đối với đối access có thể là một tổ hợp của những giá trị nêu trên.

+ Nếu trong đối access không mô tả rõ O_TEXT hay O_BINARY thì kiểu truy nhập được xác định theo giá trị của biến _fmode.

- Ví dụ: #include<dos.h> #include<fcntl.h> void main( ) { int fd,i; int a[3]; fd = open("vb.txt",O_RDONLY); read(fd,a,6); for(i=0;i<3;i++) printf("%d ",a[i]); getch( ); } 4. Hàm _open: - Cú pháp:

int _open(const char *fname, int oflag);

- Ý nghĩa:

Mở tập tin đã tồn tại để đọc hoặc ghi tùy vào đối oflag. Lỗi xẩy ra khi: + Tập tin không tồn tại.

+ Mở để ghi một tập tin chỉ đọc. - Giải thích:

fname: Tên tập tin cần mở.

oflag: Tương tự như đối access của hàm open, trừ hai điểm sau: kiểu mặc định là O_BINARY và O_CREAT không có tác dụng tạo tập tin mới.

5. Hàm close và _close:

- Cú pháp:

int close(int fd); int _close(int fd);

- Ý nghĩa:

Đóng tập tin có handle là fd. Khi thành công hàm trả về số 0. Khi có lỗi hàm trả về -1. (adsbygoogle = window.adsbygoogle || []).push({});

- Giải thích:

fd là handle nhận được từ các hàm creat, _creat, open hoặc _oepn.

6. Hàm chmod:

- Cú pháp:

int chmod(const char *fname, int mode);

- Ý nghĩa:

Đổi thuộc tính tập tin có tên chứa trong đối fname theo thuộc tính amode. Hàm cho giá trị 0 nếu thành công và –1 nếu có lỗi.

- Giải thích:

fname: Xác định tập tin cần thay đổi thuộc tính.

amode: Thuộc tính mới của tập tin. Các giá trị của amode ở đây giống như amode trong hàm creat:

S_IREAD: Tập tin chỉ đọc. S_WRITE: Tập tin chỉ ghi.

7. Hàm _chmod:

- Cú pháp:

- Ý nghĩa:

Cho biết thuộc tính của tập tin hoặc đổi thuộc tính tập tin. Hàm trả về -1 nếu có lỗi.

- Giải thích:

fname: Tên tập tin cần

func: Nếu func=0, hàm cho biết thuộc tính của tập tin, và không cần dùng đối thứ 3. Nếu func=1, hàm cho thay đổi thuộc tính của tập tin, dùng đối attrib để xác định thuộc tính mới. Các giá trị của attrib ở đây giống như attrib trong hàm _creat:

FA_RDONLY: Tập tin chỉ đọc. FA_ARCH: Tập tin chỉ ghi. FA_HIDDEN: Tập tin ẩn.

8. Hàm perror:

- Cú pháp:

void perror(const char *s);

- Ý nghĩa:

Hàm in chuỗi s và thông báo lỗi.

9. Hàm write:

- Cú pháp:

unsigned write(int fd, void *ptr, unsigned n);

- Ý nghĩa:

Ghi n byte từ vùng nhớ do ptr trỏ tới lên tập tin có handle fd. Khi thành công hàm trả về một số bằng số byte ghi được. Khi có lỗi hàm trả về -1.

- Giải thích: (adsbygoogle = window.adsbygoogle || []).push({});

fd: Là handle tập tin.

ptr: Là con trỏ trỏ tới vùng nhớ chứa dữ liệu. n: Số byte dữ liệu cần ghi lên tập tin.

10. Hàm read:

- Cú pháp:

unsigned read(int fd, void *ptr, unsigned n);

- Ý nghĩa:

Đọc n byte từ tập tin có handle là fd chứa vào vùng nhớ ptr. Khi thành công hàm trả về một số bằng số byte đọc được. Khi có lỗi hàm trả về -1.

- Giải thích:

fd: Là handle tập tin.

ptr: Là con trỏ trỏ tới vùng nhớ sẽ nhận dữ liệu đọc đựơc. n: Số byte dữ liệu cần đọc từ tập tin ra vùng nhớ ptr.

11. Hàm lseek:

- Cú pháp:

long lseek(int fd, long sb, int xp);

- Ý nghĩa:

+ Hàm di chuyển con trỏ định vị của tập tin fd từ vị trí xác định bởi đối xp qua một số byte bằng giá trị tuyệt đối của sb. Nếu sb dương thì chiều di chuyển là về cuối tập tin, còn nếu sb âm thì chiều di chuyển là về phía đầu tập tin.

+ Khi thành công hàm trả về một giá trị kiểu long là vị trí mới của con trỏ định vị (số thứ tự của byte mà con trỏ định vị trỏ tới). Khi có lỗi hàm trả về -1L.

- Giải thích:

fd: Handle tập tin.

sb: Số byte cần di chuyển

xp: Cho biết vị trí xuất phát. Nó có thể là: SEEK_SET hay 0: Xuất phát từ đầu tập tin.

III. MỘT SỐ HÀM NHẬP XUẤT CẤP 2

Trong tài liệu này chúng tôi chỉ đi sâu vào các hàm nhập xuất cấp 1. Các hàm cấp 2 chỉ được giới thiệu chủ yếu là để tham khảo thêm. Nếu muốn hiểu rõ và có thể sử dụng được chúng các bạn có thể đọc những tài liệu ở trang “Tài liệu tham khảo” nằm cuối chương trình.

* Các hàm dùng chung cho cả hai loại file:

1. fopen dùng để mở file. 2. fclose dùng đóng tập tin.

3. fcloseall dùng để đóng tất cả các file đang mở. 4. fflush dùng để làm sạch vùng đệm của file.

5. fflushall dùng để làm sạch vùng đệm của các file đang mở. 6. ferror cho biết có lỗi (<>0) hay không có lỗi (=0).

7. feof cho biết đã gặp cuối file hay chưa. 8. unlink và remove dùng để loại file trên đĩa.

9. fseek dùng để di chuyển con trỏ file đến vị trí bất kỳ trên file. 10. ftell cho biết vị trí hiện tại của con trỏ.

11. putc và fputc dùng để ghi ký tự lên file. 12. getc và fgetc dùng để đọc ký tự từ file.

* Các hàm nhập xuất theo kiểu văn bản: (adsbygoogle = window.adsbygoogle || []).push({});

13. fprintf dùng để đọc dữ liệu từ file theo khuôn dạng. 14. fputs dùng để ghi một chuỗi ký tự lên file.

15. fgets dùng để đọc một chuỗi ký tự từ file.

* Các hàm nhập xuất theo kiểu nhị phân:

16. putw dùng để ghi một số nguyên (2 byte) lên file. 17. getw dùng để đọc một số nguyên (2 byte) từ file. 18. fwrite dùng để ghi một số mẫu tin lên file. 19. fread dùng để đọc một số mẫu tin từ file.

CHƯƠNG X:

Một phần của tài liệu Ngôn ngữ C 2 (Trang 52 - 57)