Hàm freopen() trong C | Thư viện C chuẩn




Hàm freopen() trong C

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:

Hàm freopen trong 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:

Hàm freopen trong C

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:

#include <stdio.h>

int main ()
{
   FILE *fp;
   int c;

   fp = fopen("baitapc.txt","r");
   while(1)
   {
      c = fgetc(fp);
      if( feof(fp) )
      {
         break ;
      }
      printf("%c", c);
   }
   fclose(fp);
   return(0);
}
Hàm freopen trong C

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Các bài Thư viện C phổ biến khác tại VietJack:


stdio-h-trong-c.jsp


Tài liệu giáo viên