複製鏈接
請複製以下鏈接發送給好友

文件指針

鎖定
在C語言中用一個指針變量指向一個文件,這個指針稱為文件指針。通過文件指針就可對它所指的文件進行各種操作。
中文名
文件指針
外文名
FILE pointer
定義説明形式
FILE *指針變量標識符等
控制方法
定義一個流對象並指定文件連接等

文件指針概念

頭文件:<fstream>:C++STL文件輸入輸出流;<stdio.h> : C標準輸入輸出

文件指針定義

定義説明文件指針的一般形式為:
FILE *指針變量標識符;
其中FILE應為大寫,它實際上是由系統定義的一個結構,該結構中含有文件名、文件狀態和文件當前位置等信息。在編寫源程序時不必關心FILE結構的細節。
在使用文件時,需要在內存中為其分配空間,用來存放文件的基本信息,給結構體類型是由系統定義的,C語言規定該類型為FILE型,其聲明如下:
typedef struct
{
short level;
unsigned flags;
char fd;
unsigned char hold;
short bsize;
unsigned char *buffer;
unsigned ar *curp;
unsigned istemp;
short token;
}FILE;
[1] 
例如:
FILE *fp;
表示fp是指向FILE結構的指針變量,通過fp即可找存放某個文件信息的結構變量,然後按結構變量提供的信息找到該文件,實施對文件的操作。習慣上也籠統地把fp稱為指向一個文件的指針。

文件指針控制方法

fstream streamObject("example.txt");//首先定義一個流對象,並指定一個文件連接:
//然後是控制指針,也就是樓主你想要的答案,
//一般是使用seekg函數來控制文件的指針:
//打開後默認是指向文件開頭
//因此打開後有沒有下面這句代碼是一樣的,下面的代碼表示指向文件開頭
streamObject.seekg(ios::beg);//指向開頭(和streamObject.seekg(0,ios::beg)效果是一樣的)
streamObject.seekg(ios::end);//指向末尾:
streamObject.seekg(10,ios::cur); //讓文件指針從當前位置向文件末方向移動10個字節
streamObject.seekg(-10,ios::cur); //讓文件指針從當前位置向文件開始方向移動10個字節
streamObject.seekg(10,ios::beg); //讓文件指針定位到離文件開頭10個字節的位置
...以此類推
讀取文件指針當前指向的數據的方式是這樣的:
比如讀取int:
int i;
streamObject>>i;
讀取字符串:
string str;
streamObject>>str;
默認會自動過濾空格和換行
讀取後文件指針會向文件末方向偏移讀取的字節數

文件指針使用舉例

#include<stdio.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
char buf[1024];
FILE *fp=NULL;
if(argc!=2){

fprintf(
stderr,"argumenterror\ntry%sfilename\n",argv[1]);
exit(1);
}
if((fp=
fopen(argv[1],"r"))==NULL){
perror("fopen");
exit(1);
}

while(
fgets(buf,1024,fp)!=NULL)

printf("%s\n",buf);

fclose(fp);
return 0;
}
~

參考資料
  • 1.    劉彬彬,孫秀梅等編著.學通C語言的24堂課.北京:清華大學出版社,2011年6月第1版:第548頁