Các thao tác có thể được thực hiện trên tệp bằng ngôn ngữ C như sau -
- Đặt tên cho tệp.
- Mở tệp.
- Đọc từ tệp.
- Đang ghi vào tệp.
- Đang đóng tệp.
Cú pháp
Cú pháp để mở và đặt tên tệp như sau -
FILE *File pointer;
Ví dụ:FILE * fptr;
File pointer = fopen ("File name”, "mode”);
Ví dụ:fptr =fopen ("sample.txt", "r")
FILE *fp; fp = fopen ("sample.txt”, "w”);
Các chế độ mở tệp
Các chế độ mở tệp bằng ngôn ngữ C được giải thích bên dưới -
Chế độ | Mô tả |
---|---|
r | Tệp được mở để đọc |
w | Tệp được mở để viết |
a + | Tệp được mở để gắn thêm |
r + | Tệp được mở để đọc &ghi |
w + | Tệp được mở để ghi &đọc |
a + | Tệp được mở để thêm &đọc |
rt | Tệp văn bản được mở để đọc |
wt | Tệp văn bản được mở để viết |
tại | Tệp văn bản được mở để thêm vào |
r + t | Tệp văn bản được mở để đọc &ghi |
w + t | Tệp văn bản được mở để ghi &đọc |
a + t | Tệp văn bản được mở để bổ sung &đọc |
rb | Tệp nhị phân được mở để đọc |
wb | Tệp nhị phân được mở để ghi |
ab | Tệp nhị phân được mở để thêm vào |
r + b | Tệp nhị phân được mở để đọc &ghi |
w + b | Tệp nhị phân được mở để ghi &đọc |
a + b | Tệp nhị phân được mở để bổ sung &đọc. |
- Chế độ ghi khi mở tệp
Cú pháp như sau -
FILE *fp; fp = fopen ("sample.txt”, "w”);
Nếu tệp không tồn tại, thì một tệp mới sẽ được tạo.
Nếu tệp tồn tại thì nội dung cũ sẽ bị xóa và nội dung hiện tại sẽ được lưu trữ.
- Chế độ đọc khi mở tệp
Cú pháp như sau -
FILE *fp fp =fopen ("sample.txt”, "r”);
Nếu tệp không tồn tại, thì hàm fopen trả về giá trị NULL.
Nếu tệp tồn tại, thì dữ liệu được đọc thành công từ tệp
- Thêm chế độ mở tệp
Cú pháp như sau -
FILE *fp; fp =fopen ("sample.txt", "a");
Nếu tệp không tồn tại, thì một tệp mới sẽ được tạo.
Nếu tệp tồn tại, nội dung hiện tại sẽ được thêm vào nội dung cũ.
Chế độ | Thoát | Không thoát |
---|---|---|
R | Đọc | fp ="NULL" |
W | Nội dung hiện tại | Tệp mới sẽ được tạo |
Đ | Nội dung cũ Nội dung hiện tại | Tệp mới sẽ được tạo |
Ví dụ
Sau đây là chương trình C cho các thao tác trên tệp -
//Program for copying the contents of one file into another file #include <stdio.h> #include <stdlib.h> // For exit() int main(){ FILE *fptr1, *fptr2; char filename[100], c; printf("Enter the filename to open for reading \n"); scanf("%s",filename); // Open one file for reading fptr1 = fopen(filename, "r"); if (fptr1 == NULL){ printf("Cannot open file %s \n", filename); exit(0); } printf("Enter the filename to open for writing \n"); scanf("%s", filename); // Open another file for writing fptr2 = fopen(filename, "w"); if (fptr2 == NULL){ printf("Cannot open file %s \n", filename); exit(0); } // Read contents from file c = fgetc(fptr1); while (c != EOF){ fputc(c, fptr2); c = fgetc(fptr1); } printf("\nContents copied to %s", filename); fclose(fptr1); fclose(fptr2); return 0; }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
Enter the filename to open for reading file2.txt Enter the filename to open for writing file1.txt Contents copied to file1.txt