Hàm freopen() trong C
Freopen trong C++ là gì? Không phải freeopen, cách viết đúng là freopen và dưới đây là những điều bạn cần biết về hàm này.
Hàm FILE *freopen(const char *filename, const char *mode, FILE *stream) trong Thư viện C chuẩn gắn kết một filename mới với Stream đã cho và cùng lúc đó đóng FILE cũ trong Stream.
Khai báo hàm freopen() trong C
Dưới đây là phần khai báo cho hàm freopen() trong C:
FILE *freopen(const char *filename, const char *mode, FILE *stream)
Tham số
filename − Đây là chuỗi chứa tên file để được mở.
mode − Đây là chuỗi chứa chế độ truy vập file. Bao gồm:
| mode | Miêu tả |
|---|---|
| "r" | Mở một file để đọc. File phải tồn tại |
| "w" | Tạo một file trống để ghi. Nếu một file với cùng tên đã tồn tại, nội dung của nó bị tẩy đi và file được xem như một file trống mới |
| "a" | Phụ thêm (append) tới một file. Với các hoạt động ghi, phụ thêm dữ liệu tại cuối file. File được tạo nếu nó chưa tồn tại |
| "r+" | Mở một file để ghi và đọc. File phải tồn tại |
| "w+" | Tạo một file trống để ghi và đọc |
| "a+" | Mở một file để đọc và phụ thêm |
stream − Đây là con trỏ tới một đối tượng FILE mà nhận diện Stream để được mở lại.
Trả về giá trị
Nếu file được mở lại thành công, hàm trả về một con trỏ tới một đối tượng nhận diện Stream đó, nếu không thì con trỏ null được trả về.
Ví dụ
Chương trình C sau minh họa cách sử dụng của hàm freopen() trong C:
#include <stdio.h> int main () { FILE *fp; printf("Dong text nay hien thi tren stdout\n"); fp = freopen("baitapc.txt", "w+", stdout); printf("Dong text nay duoc ghi vao baitapc.txt\n"); fclose(fp); return(0); }
Biên dịch và chạy chương trình trên sẽ gửi dòng sau tại STDOUT trước:

Sau lời gọi tới hàm freopen(), nó gắn kết STDOUT tới baitapc.txt, vì thế bất cứ cái gì chúng ta ghi tại STDOUT sẽ đi vào trong baitapc.txt. Vì thế, baitapc.txt sẽ có nội dung sau:

Bây giờ bạn theo dõi nội dung của file trên bởi sử dụng chương trình C sau:
![]()
Tóm lại, freopen() là một hàm tích hợp được định nghĩa trong tiêu đề <cstdio>, có chức năng chuyển hướng con trỏ FILE hiện có sang một luồng khác. Hàm này được sử dụng trong việc đọc và ghi tệp.
Hàm hoạt động theo cách sau:
- Hàm đóng tệp được liên kết với luồng, bỏ qua mọi lỗi.
- Nếu filename không phải là NULL, nó sẽ mở một tệp có tên được chỉ định trong đối số filename ở chế độ được chỉ định trong đối số mode. Ngược lại, nếu filename là NULL, nó sẽ cố gắng mở một tệp đã được liên kết trước đó với luồng.
- Tệp mới được liên kết với luồng tệp được chỉ định trong đối số stream.
- Điều này khác với fopen(), chỉ mở một tệp ở chế độ truy cập được chỉ định; trong khi đó, freopen() được sử dụng để chuyển hướng đầu vào, đầu ra và lỗi tiêu chuẩn sang một tệp được chỉ định.
Trên đây là những điều cần biết về freopen() trong C. Hi vọng bài viết giúp bạn hiểu cách sử dụng hàm này.
Bài trước: Hàm fread() trong C
Bài tiếp: Hàm fseek() trong C
Bạn nên đọc
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:
Cũ vẫn chất
-

Công thức tính thể tích hình chóp, chu vi hình chóp
Hôm qua -

19+ điều thú vị giúp bạn "giết" thời gian khi ở một mình
Hôm qua -

Cách xóa công thức nhanh trên Excel
Hôm qua -

8 cách sửa lỗi “Excel Cannot Open Because The File Format Is Not Valid”
Hôm qua -

21 lệnh ADB hàng đầu người dùng Android nên biết
Hôm qua -

Giờ xuất hiện trái ác quỷ trong Blox Fruit
Hôm qua 20 -

Tranh tô màu cho bé nhiều chủ đề
Hôm qua -

Hàm print() trong Python
Hôm qua 1 -

Cách chuyển mã phông chữ với Unikey
Hôm qua -

Cách xem danh sách chặn Zalo nhanh nhất
Hôm qua 3
Học IT
Công nghệ
Microsoft Word 2013
Microsoft Word 2007
Microsoft Excel 2019
Microsoft Excel 2016
Microsoft PowerPoint 2019
Google Sheets
Lập trình Scratch
Bootstrap
Hướng dẫn
Ô tô, Xe máy