28/08/2018, 16:52

Hàm fsetpos() trong C

Hàm int fsetpos(FILE *stream, const fpos_t *pos) trong Thư viện C chuẩn thiết lập vị trí file của stream đã cho tới vị trí đã cho. Tham số pos là một vị trí được cung cấp bởi hàm fgetpos. Khai báo hàm fsetpos() trong C Dưới đây là phần khai báo cho hàm ...

Hàm int fsetpos(FILE *stream, const fpos_t *pos) trong Thư viện C chuẩn thiết lập vị trí file của stream đã cho tới vị trí đã cho. Tham số pos là một vị trí được cung cấp bởi hàm fgetpos.

Khai báo hàm fsetpos() trong C

Dưới đây là phần khai báo cho hàm fsetpos() trong C:

int fsetpos(FILE *stream, const fpos_t *pos)

Tham số

stream − Đây là con trỏ tới một đối tượng FILE mà nhận diện Stream.

pos − Đây là con trỏ tới một đối tượng fpos_t object chứa một vị trí được thu nhận trước đó với hàm fgetpos.

Trả về giá trị

Hàm này trả về giá trị 0 nếu thành công, hoặc nếu không nó trả về một giá trị khác 0 và thiết lập biến toàn cục errno tới một giá trị dương, mà có thể được thông dịch với perror.

Ví dụ

Chương trình C sau minh họa cách sử dụng của hàm fsetpos() trong C:

#include <stdio.h>

int main ()
{
   FILE *fp;
   fpos_t position;

   fp = fopen("baitapc.txt","w+");
   fgetpos(fp, &position);
   fputs("Hello, World!", fp);
  
   fsetpos(fp, &position);
   fputs("Dong nay se ghi de phan noi dung da co truoc do", fp);
   fclose(fp);
   
   return(0);
}

Biên dịch và chạy chương trình trên để tạo một baitapc.txt sẽ có nội dung sau. Đầu tiên chúng ta lấy vị trí ban đầu của file bởi sử dụng hàm fgetpos(), và sau đó chúng ta ghi Hello, World! trong file, sau đó chúng ta sử dụng hàm fsetpos() để phục hồi con trỏ ghi về đầu file và sau đó ghi đè file với nội dung sau:

Biên dịch và chạy chương trình trên để tạo một baitapc.txt

Bây giờ 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);
}

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Kết quả sau khi thực hiện

Theo Tutorialspoint

Bài trước: Hàm fseek() trong C

Bài tiếp: Hàm ftell() trong C

0