linux文件操作

linux都是以文件爲單位對數據進行管理的,每一個打開的文件在內存中都有一個結構體與之相對應,

這個結構體保存文件信息:文件名、大小、位置、權限等等

typedef struct {成員列表} FILE;

文件的操作:

<1>打開FILE* fopen(const char* path, const char* mode);

   path:包含文件全路徑信息的字符串

   mode:訪問文件的方式

   文本文件:

   "r"只讀文件必須存在

   "w"寫入文件不存在則創建,否則覆蓋

   "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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章