-
文件指針
鎖定
在C語言中用一個指針變量指向一個文件,這個指針稱為文件指針。通過文件指針就可對它所指的文件進行各種操作。
- 中文名
- 文件指針
- 外文名
- FILE pointer
- 定義説明形式
- FILE *指針變量標識符等
- 控制方法
- 定義一個流對象並指定文件連接等
文件指針概念
頭文件:<fstream>:C++STL文件輸入輸出流;<stdio.h> : C標準輸入輸出
文件指針定義
定義説明文件指針的一般形式為:
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;
例如:
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; } ~