linux都是以文件爲單位對數據進行管理的,每個打開的文件在內存中都有一個結構體與之相對應,linux
這個結構體保存文件信息:文件名、大小、位置、權限等等ide
typedef struct {成員列表} FILE;函數
文件的操做:spa
<1>打開FILE* fopen(const char* path, const char* mode);指針
path:包含文件全路徑信息的字符串內存
mode:訪問文件的方式資源
文本文件:字符串
"r"只讀文件必須存在get
"w"寫入文件不存在則建立,不然覆蓋it
"a"追加文件不存在則建立,不然追加
下面的狀況文件必須存在:
"r+"讀寫文件開始
"w+"讀寫覆蓋
"a+"讀寫追加
二進制文件:功能同上
"rb"
"wb"
"ab"
下面的狀況必須存在:
"rb+"或者"r+b"
"wb+""w+b"
"ab+""a+b"
成功:返回FILE*,失敗:返回NULL
<2>關閉文件:注意在文件操做失敗退出前應該關閉打開的全部文件資源
int fclose(FILE* fp);
成功:返回0,失敗:返回-1
<3>文件的操做
1.讀寫單個數據函數
int fputc(int c, FILE* fp);將一個字符寫到文件中
成功:返回c的值,失敗返回-1
int fgetc(FILE* fp);從文件中讀取一個字符並返回其ASC碼對應的值,失敗返回-1
2.讀寫數據塊函數
size_t fread(buffer,size,count,fp);//從fp中讀取count個大小爲size字節的元素的數據放入buffer中
size_t fwrite(buffer,size,count,fp);//從buffer中取出count個字節大小爲size的元素,並向fp中寫入
成功:返回成功讀寫的元素個數
3.其餘讀寫方式:
fgets
fputs
fprintf
fscanf
<4>文件定位
文件中有一個位置指針,指向當前讀寫的位置,操做完當前的元素以後,位置指針自動指向下一個元素
int fseek(FILE* fp,long offset,int whence);
offset:偏移量
whence:起始處
文件開始:0SEEK_SET
文件當前:1SEEK_CUR
文件末尾:2SEEK_END
fseek(fp,-1*sizeof(struct),SEEK_CUR);//從當前指針位置後退一個結構體大小的字節,做爲指針的位置
成功:返回0,失敗:返回-1
另外還有其餘的方式:
rewind
ftell