C說話中lseek()函數和fseek()函數的應用詳解。本站提示廣大學習愛好者:(C說話中lseek()函數和fseek()函數的應用詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話中lseek()函數和fseek()函數的應用詳解正文
C說話lseek()函數:挪動文件的讀寫地位
頭文件:
#include <sys/types.h> #include <unistd.h>
界說函數:
off_t lseek(int fildes, off_t offset, int whence);
函數解釋:
每個已翻開的文件都有一個讀寫地位, 當翻開文件時平日其讀寫地位是指向文件開首, 若是以附加的方法翻開文件(如O_APPEND), 則讀寫地位會指向文件尾. 當read()或write()時, 讀寫地位會隨之增長,lseek()就是用來掌握該文件的讀寫地位. 參數fildes 為已翻開的文件描寫詞, 參數offset 為依據參數whence來挪動讀寫地位的位移數.
參數 whence 為以下個中一種:
以下是教特殊的應用方法:
1) 欲將讀寫地位移到文件開首時:lseek(int fildes, 0, SEEK_SET);
2) 欲將讀寫地位移到文件尾時:lseek(int fildes, 0, SEEK_END);
3) 想要獲得今朝文件地位時:lseek(int fildes, 0, SEEK_CUR);
前往值:當挪用勝利時則前往今朝的讀寫地位, 也就是間隔文件開首若干個字節. 如有毛病則前往-1, errno 會寄存毛病代碼.
附加解釋:Linux 體系不許可lseek()對tty 裝配感化, 此項舉措會令lseek()前往ESPIPE.
C說話fseek()函數:挪動文件流的讀寫地位
頭文件:
#include <stdio.h>
界說函數:
int fseek(FILE * stream, long offset, int whence);
函數解釋:
fseek()用來挪動文件流的讀寫地位.
1、參數stream 為已翻開的文件指針,
2、參數offset 為依據參數whence 來挪動讀寫地位的位移數。參數 whence 為以下個中一種:
SEEK_SET 從距文件開首offset 位移量為新的讀寫地位. SEEK_CUR 以今朝的讀寫地位往後增長offset 個位移量.
SEEK_END 將讀寫地位指向文件尾後再增長offset 個位移量. 當whence 值為SEEK_CUR 或
SEEK_END 時, 參數offset 許可負值的湧現.
以下是較特殊的應用方法:
1) 欲將讀寫地位挪動到文件開首時:fseek(FILE *stream, 0, SEEK_SET);
2) 欲將讀寫地位挪動到文件尾時:fseek(FILE *stream, 0, 0SEEK_END);
前往值:當挪用勝利時則前往0, 如有毛病則前往-1, errno 會寄存毛病代碼.
附加解釋:fseek()不像lseek()會前往讀寫地位, 是以必需應用ftell()來獲得今朝讀寫的地位.
典范
#include <stdio.h> main() { FILE * stream; long offset; fpos_t pos; stream = fopen("/etc/passwd", "r"); fseek(stream, 5, SEEK_SET); printf("offset = %d\n", ftell(stream)); rewind(stream); fgetpos(stream, &pos); printf("offset = %d\n", pos); pos = 10; fsetpos(stream, &pos); printf("offset = %d\n", ftell(stream)); fclose(stream); }
履行
offset = 5 offset = 0 offset = 10