/ *g ọi hàm g() biến b được cấp phát
1. Mở/đóng kênh cho tệp
FILE *fopen(char *name, char *mode); /* mở tệp */ int fclose(FILE*); /* đóng tệp */
Một kênh xuất nhập sau khi mở cho một tệp được quản lý bởi một con trỏ FILE*. Nếu vì một lí do nào đó mà tệp khơng thể mở được thì kết quả của hàm này là con trỏ NULL. Hàm mở tệp này cần truyền vào tham số là một đường dẫn tên tệp (name), một chuỗi mô tả chế độ mở tệp. Ví dụ:
FILE* f;
f=fopen("dulieu.txt", "rt"); /* mở tệp dữ liệu văn bản ra để đọc */ if (p==NULL) perror("Loi khong mo duoc tep");
else { printf("Tep da mo duoc"); fclose(f); } Các chế độ mở đọc/ghi "r" Mở tệp để đọc
"w" Mở tệp để ghi (nếu khơng có thì báo lỗi)
"a" Mở tệp để thêm dữ liệu (nếu khơng có thì báo lỗi) "r+" Mở tệp để đọc và ghi (nếu khơng có thì tạo mới) "w+" Mở tệp để ghi (nếu khơng có thì tạo mới)
"a+" Mở tệp để ghi thêm dữ liệu (nếu khơng có thì tạo mới)
Một tệp có thể được xử lí đọc ghi dưới dạng nhị phân (binary) hoặc văn bản (text) phụ thuộc vào dữ liệu của chúng. Sự khác nhau giữa nhi phân và văn bản là ở dạng nhị phân dữ liệu
chỉ đơn thuần là các byte dữ liệu. Ngược lại dữ liệu ở dạng văn bản là các kí tự trong đó có phân biệt kí tự hiển thị và kí tự điều khiển. Ví dụ ‘\n’ là điều khiển xuống dịng được in vào vào một tệp dưới DOS hai mã 13 và 10, cịn nếu là tệp nhị phân thì chỉ có 1 byte số 13 mà thơi. Ngồi ra ở dạng văn bản khi gặp một số 26 (^Z) thì coi nó như là điểm kết thúc tệp bất kể tệp vẫn còn dữ liệu tiếp theo. Muốn mở ở chế độ văn bản ta chỉ cần thêm kí tự ‘t’ vào chế độ mở, kí tự ‘b’ nếu mở ở dạng nhị phân ("r+t", "wt", "r+b",...).
Vào ra dữ liệu với tệp lúc này thực chất là vào ra dữ liệu trên kênh xuất nhập. Có hai nhóm hàm vào ra trên kênh là nhóm vào ra dạng văn bản và nhóm vào ra dạng nhị phân.