fseek/ftell/rewind/fgetpos/fsetpos函数使用-linux
程序:
#include<stdio.h>
int?main(int?argc,char?*argv[])
{
FILE?*?stream;
fpos_t?pos;
 
stream = fopen(“/etc/passwd”,”r”);
fseek(stream,5,SEEK_SET);
printf(“offset=%d/n”,ftell(stream));
 
rewind(stream);
?/*?取得指針位置并存入&pos所指向的對象?*/
fgetpos(stream,&pos);
printf(“offset=%d/n”,pos);
 
pos = 10;
fsetpos(stream,&pos);
printf(“offset?=?%d/n”,ftell(stream));
 
fclose(stream);
return 0;
}
 
結果:
 
offset?=?5
offset?= 0
offset = 10
 
 fseek(移動文件流的讀寫位置)
 
頭文件
#include<stdio.h>
定義函數(shù)
int?fseek(FILE?*?stream,long?offset,int?whence);
函數(shù)說明
fseek()用來移動文件流的讀寫位置。參數(shù)stream為已打開的文件指針,參數(shù)offset為根據參數(shù)whence來移動讀寫位置的位移數(shù)。
參數(shù)?whence為下列其中一種:
SEEK_SET--文件開頭offset位移量 為 新的讀寫位置。
SEEK_CUR--目前的讀寫位置往后增加offset個位移量。
SEEK_END--指向文件尾再增加offset個位移量 為 新的讀寫位置。
 
當whence值為SEEK_CUR?或SEEK_END時,參數(shù)offset允許負值的出現(xiàn)。
下列是較特別的使用方式:
1)?欲將讀寫位置移動到文件開頭時:fseek(FILE?*stream,0,SEEK_SET);
2)?欲將讀寫位置移動到文件尾時:fseek(FILE?*stream,0,0SEEK_END);
 
返回值
當調用成功時則返回0,若有錯誤則返回-1,errno會存放錯誤代碼。
附加?
fseek()不像lseek()會返回讀寫位置,因此必須使用ftell()來取得目前讀寫的位置。
 ftell(取得文件流的讀取位置)?
頭文件?
#include<stdio.h>
定義函數(shù)?
long?ftell(FILE?*?stream);
函數(shù)說明?
ftell()用來取得文件流目前的讀寫位置。參數(shù)stream為已打開的文件指針。
返回值?
當調用成功時則返回目前的讀寫位置,若有錯誤則返回-1,errno會存放錯誤代碼。
錯誤代碼?EBADF?參數(shù)stream無效或可移動讀寫位置的文件流。
 rewind(重設文件流的讀寫位置為文件開頭)?
頭文件
#include<stdio.h>
定義函數(shù)?
void?rewind(FILE?*?stream);
函數(shù)說明?
rewind()用來把文件流的讀寫位置移至文件開頭。參數(shù)stream為已打開的文件指針。此函數(shù)相當于調用fseek(stream,0,SEEK_SET)。
返回值?
無返回值?
 fgetpos(取得當前文件的指針所指的位置)
頭文件
#include<stdio.h>
函數(shù)原型
int?fgetpos(?FILE?*stream,?fpos_t?*pos?);
函數(shù)功能
取得當前文件的指針所指的位置,并把該指針所指的位置數(shù)存放到pos所指的對象中。pos值以內部格式存儲,僅由fgetpos和fsetpos使用。其中fsetpos的功能與fgetpos相反,為了詳細介紹,將在后節(jié)給與說明。
返回值
成功返回0,失敗返回非0,并設置errno。
 
fsetpos(將文件指針定位在pos指定的位置上)
 
頭文件
#include<stdio.h>
函數(shù)原型
int?fsetpos(FILE?*fp,?const?fpos_t?*pos);
函數(shù)功能
將文件指針定位在pos指定的位置上。該函數(shù)的功能與前面提到的fgetpos相反,是將文件指針fp按照pos指定的位置在文件中定位。pos值以內部格式存儲,僅由fgetpos和fsetpos使用。
返回值
成功返回0,否則返回非0。
 
總結
以上是生活随笔為你收集整理的fseek/ftell/rewind/fgetpos/fsetpos函数使用-linux的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: # hive打不开,提示节点过少,进入安
- 下一篇: c语言输入四个成绩求最高分最低分,数组实
