`lseek`函數用于在文件中移動當前文件偏移量。它的原型如下所示:
#includeoff_t lseek(int fd, off_t offset, int whence);
`fd`是文件描述符,指定要進行操作的文件。
`offset`是要移動的偏移量。正值表示向文件末尾方向移動,負值表示向文件開頭方向移動。
`whence`參數指定了從哪個位置開始計算偏移量,它可以取以下三個值:
`SEEK_SET`:從文件開頭開始計算偏移量。
`SEEK_CUR`:從當前文件偏移量開始計算偏移量。
`SEEK_END`:從文件末尾開始計算偏移量。
`lseek`函數返回新的文件偏移量,如果出現錯誤,則返回-1,并設置全局變量`errno`來指示錯誤類型。
下面是一個例子,展示了如何使用`lseek`函數將文件偏移量設置為文件開頭、文件末尾和當前位置:
#include#include #include #include int main() { int fd = open("file.txt", O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); if (fd == -1) { perror("open"); exit(1); } // 設置偏移量為文件開頭 off_t pos = lseek(fd, 0, SEEK_SET); if (pos == -1) { perror("lseek"); exit(1); } printf("當前文件偏移量:%ld\n", pos); // 設置偏移量為文件末尾 pos = lseek(fd, 0, SEEK_END); if (pos == -1) { perror("lseek"); exit(1); } printf("當前文件偏移量:%ld\n", pos); // 返回到文件開頭之前的位置 pos = lseek(fd, -10, SEEK_CUR); if (pos == -1) { perror("lseek"); exit(1); } printf("當前文件偏移量:%ld\n", pos); close(fd); return 0; }
請注意,這只是一個簡單的例子,實際使用時需要根據具體需求進行適當的錯誤處理和邊界檢查。