C語言檔案與目錄(三)
檔案讀寫位置的移動:每一個已開啟的檔案都有一個讀寫位置。當開啟檔案時通常讀寫位置是指向檔案開頭,若是以附加的方式開啟檔案,則讀寫位置會指向檔案末尾。read或write函式讀寫檔案時,讀寫位置會隨相應移動。可以用lseek函式在檔案內容中的位置上面移動,這樣就可以在檔案中不同的位置進行上讀寫。這個函式的使用方法如下所示。
01 off_t lseek(int fd,off_t offset ,int whence);
在引數列表中,fd表示用open函式開啟的檔案返回編號。引數offset是根據引數whence來移動讀寫位置的位移數。whence為系統定義的常量,可能有下面這些可能賦值。
SEEK_SET:引數offset即為新的讀寫位置。
SEEK_CUR:以目前的讀寫位置往後增加offset個位移量。
SEEK_END:將讀寫位置指向檔案尾後再增加offset個位移量。
當whence值為SEEK_CUR或SEEK_END時,引數offet允許負值的出現。這時表示在當前位置上向前移動若干個位元組。下面是一些常用的檔案位置移動方式。
lseek(int fd,0,SEEK_SET):將讀寫位置移到檔案開頭。
lseek(int fd,0,SEEK_END):將讀寫位置移到檔案結尾。
lseek(int fd,0,SEEK_CUR):取得當前的檔案位置。
函式呼叫成功時返回這個檔案當前的讀寫位置,即距檔案開頭多少個位元組。若有錯誤則返回-1,errno 會存放錯誤程式碼。這個函式可能產生的錯誤程式碼如下所示。
EBADF:傳入的引數不是一個已經開啟的檔案。
EINVAL:給入的whence引數不合理。
EOVERFLOW:給入的移動引數導致檔案頭指標指向了檔案頭以前,產生了溢位錯誤。
要使用這個函式,需要在程式的前面包含下面的標頭檔案。
#include<sys/types.h>
#include<unistd.h>
01 off_t lseek(int fd,off_t offset ,int whence);
在引數列表中,fd表示用open函式開啟的檔案返回編號。引數offset是根據引數whence來移動讀寫位置的位移數。whence為系統定義的常量,可能有下面這些可能賦值。
SEEK_SET:引數offset即為新的讀寫位置。
SEEK_CUR:以目前的讀寫位置往後增加offset個位移量。
SEEK_END:將讀寫位置指向檔案尾後再增加offset個位移量。
當whence值為SEEK_CUR或SEEK_END時,引數offet允許負值的出現。這時表示在當前位置上向前移動若干個位元組。下面是一些常用的檔案位置移動方式。
lseek(int fd,0,SEEK_SET):將讀寫位置移到檔案開頭。
lseek(int fd,0,SEEK_END):將讀寫位置移到檔案結尾。
lseek(int fd,0,SEEK_CUR):取得當前的檔案位置。
函式呼叫成功時返回這個檔案當前的讀寫位置,即距檔案開頭多少個位元組。若有錯誤則返回-1,errno 會存放錯誤程式碼。這個函式可能產生的錯誤程式碼如下所示。
EBADF:傳入的引數不是一個已經開啟的檔案。
EINVAL:給入的whence引數不合理。
EOVERFLOW:給入的移動引數導致檔案頭指標指向了檔案頭以前,產生了溢位錯誤。
要使用這個函式,需要在程式的前面包含下面的標頭檔案。
#include<sys/types.h>
#include<unistd.h>
int fd_file;
char file[255]="";
char file_buffer[1024];
strcat(strcpy(file,mainpath),"\\file.txt");
if((fd_file=open(file,O_RDONLY))==0)
{
printf("%s\n",strerror(errno));
}
else
{
read(fd_file,file_buffer,4);
printf("%s\n",file_buffer);
lseek(fd_file,0,SEEK_SET);
read(fd_file,file_buffer,4);
printf("%s\n",file_buffer);
lseek(fd_file,-4,SEEK_CUR);
read(fd_file,file_buffer,4);
printf("%s\n",file_buffer);
close(fd_file);
}
相關文章
- C語言檔案與目錄(一)C語言
- C語言檔案與目錄(二)C語言
- C語言檔案與目錄(五)檔案鎖C語言
- C語言檔案與目錄(四)緩衝區C語言
- C語言remove()函式:刪除檔案或目錄C語言REM函式
- C語言rename()函式:重新命名檔案或目錄C語言函式
- 18、檔案與目錄
- C語言檔案操作C語言
- C語言(檔案操作)C語言
- Linux 檔案與目錄Linux
- C語言知識彙總 | 00-C語言知識彙總目錄C語言
- C語言(檔案加解密)C語言解密
- C語言-檔案讀寫C語言
- Go 語言目錄結構與實踐Go
- Linux 檔案與目錄管理Linux
- 刪除目錄及目錄下所有檔案與子目錄 (轉)
- C#快速入門教程(24)—— 路徑、目錄與檔案C#
- 用c語言處理檔案C語言
- C語言 檔案IO的使用C語言
- c語言多檔案編譯C語言編譯
- c語言檔案操作相關C語言
- c語言拷貝檔案程式C語言
- C語言實現檔案加密C語言加密
- C語言 - 標頭檔案包含C語言
- c語言-記錄閱讀《c缺陷與陷阱》C語言
- C語言/C++讀取檔案資訊C語言C++
- linux檔案與目錄管理命令Linux
- Linux檔案與目錄管理(2)Linux
- Linux 檔案與目錄管理(轉)Linux
- C語言判斷檔案存在和建立檔案C語言
- C語言標頭檔案組織與包含原則C語言
- 沒有目錄建目錄,沒有檔案建檔案
- C語言---“C語言 誰與爭鋒?”C語言
- 獲得檔案的大小(c語言)C語言
- 目錄與檔案屬性:編寫ls
- [程式設計語言]-00:目錄程式設計
- C語言chdir()函式:改變當前的工作目錄C語言函式
- C語言標頭檔案#include的作用C語言