C ++ fseek () - Thư viện chuẩn C ++

Hàm fseek () trong C ++ đặt chỉ báo vị trí tệp cho luồng tệp nhất định.

Hàm fseek () được định nghĩa trong tệp tiêu đề.

nguyên mẫu fseek ()

 int fseek (FILE * stream, long offset, int origin);

Nếu tệp được mở ở chế độ nhị phân, vị trí mới của con trỏ tệp được bù đắp chính xác byte so với điểm gốc.

Nếu tệp được mở ở chế độ văn bản, các giá trị được hỗ trợ cho độ lệch là:

  • Không: Nó hoạt động với bất kỳ giá trị gốc nào, tức là SEEK_SET, SEEK_CUR và SEEK_END.
  • Giá trị được trả về bởi một cuộc gọi đến ftell (luồng): Giá trị này chỉ hoạt động với nguồn gốc của SEEK_SET.

Nếu luồng được định hướng rộng, các hạn chế của cả luồng văn bản và luồng nhị phân được áp dụng, tức là kết quả của ftell được cho phép với SEEK_SET và độ lệch 0 được phép từ SEEK_SET và SEEK_CUR, nhưng không cho phép SEEK_END.

Hàm fseek cũng hoàn tác các tác động của ungetc và xóa trạng thái cuối tệp, nếu có.

Nếu xảy ra lỗi đọc hoặc ghi, lỗi được đặt và vị trí tệp không bị ảnh hưởng.

tham số fseek ()

  • stream: Dòng tệp để sửa đổi.
  • offset: Số ký tự cần dịch chuyển từ điểm gốc.
  • origin: Vị trí được sử dụng làm tham chiếu để thêm vào bù đắp. Nó có thể có các giá trị sau:
giá trị gốc fseek ()
Giá trị Sự miêu tả
SEEK_SET Bắt đầu hồ sơ
SEEK_CUR Vị trí hiện tại của con trỏ tệp
XEMK_END Phần cuối của tập tin

fseek () Giá trị trả về

  • Khi thành công, hàm fseek () trả về 0, ngược lại thì khác.

Ví dụ: Hàm fseek () hoạt động như thế nào?

 #include int main() ( FILE* fp = fopen("example.txt","w+"); char ch; fputs("Erica 25 Berlin", fp); rewind(fp); printf("Name: "); while((ch=fgetc(fp))!=' ') putchar(ch); putchar(''); printf("Age: "); fseek(fp,10,SEEK_SET); while((ch=fgetc(fp))!=' ') putchar(ch); putchar(''); printf("City: "); fseek(fp,15,SEEK_SET); while((ch=fgetc(fp))!=EOF) putchar(ch); putchar(''); fclose(fp); return 0; )

Khi bạn chạy chương trình, đầu ra sẽ là:

 Tên: Erica Tuổi: 25 Thành phố: Berlin

thú vị bài viết...