fseek()
Di chuyển con trỏ file đến vị trí tùy ý. Trả về 0 nếu thành công, khác 0 nếu lỗi.
Cú pháp
int fseek(FILE *stream, long offset, int whence);
Tham số:
- stream – con trỏ file
- offset – số byte dịch chuyển
- whence – gốc tính offset:
| Hằng số | Ý nghĩa |
|---|---|
| SEEK_SET | Đầu file (offset >= 0) |
| SEEK_CUR | Vị trí hiện tại (offset âm/dương) |
| SEEK_END | Cuối file (offset <= 0) |
Ví dụ: Tính kích thước file
#include <stdio.h>
int main() {
FILE *f = fopen("demo.txt", "r");
if (!f) { printf("Khong mo duoc file"); return 1; }
fseek(f, 0, SEEK_END); // Nhay den cuoi file
long size = ftell(f); // Lay vi tri = kich thuoc
printf("Kich thuoc file: %ld bytes", size);
fclose(f);
return 0;
}
Kết quả
Kich thuoc file: 78 bytes
rewind()
Đưa con trỏ file về đầu file (tương đương fseek(stream, 0, SEEK_SET)). Không trả về giá trị. Xóa cờ lỗi và EOF.
void rewind(FILE *stream);
Ví dụ
#include <stdio.h>
int main() {
FILE *f = fopen("new.txt", "r");
if (!f) { printf("Khong mo duoc file"); return 1; }
rewind(f); // Ve dau file
fseek(f, 0, SEEK_END); // Nhay cuoi
printf("Kich thuoc: %ld bytes", ftell(f));
fclose(f);
return 0;
}
Kết quả
Kich thuoc: 28 bytes
So sánh
| Đặc điểm | fseek() | rewind() |
|---|---|---|
| Linh hoạt | Vị trí bất kỳ | Chỉ đầu file |
| Trả về | int (0/thành công) | void |
| Xóa cờ lỗi/EOF | Không | Có |
| Dùng khi | Cần nhảy vị trí tùy ý | Chỉ cần reset về đầu |