文件操作是編程必不可少的技能,普通文件的讀寫各位都會,就不展開說了,今天小編帶各位學習一下文件隨機讀寫。
文件隨機讀寫就是不按常規讀寫文件,想從哪兒入手就從哪兒入手,例如說,你聽歌時,欸,就這幾句好聽,那截下來當鈴聲,那截斷偷取點就是隨機讀寫的一個地點。文件隨機讀寫呢,有3板斧,諸位請看。
1.rewind()函數
rewind()函數的作用是將文件地點指針指向文件開頭,不管你的文件地點指針在哪兒指著呢,rewind()函數一出場,一定撥拉到開頭。
void rewind(FILE * stream);
在rewind()函數里面,void表示這種函數沒有返回值,參數stream表示一個文件指針,就是把這種文件指針指向的文件的地點指針撥拉到開頭。是不是有那么一點繞?繞就對了。stream就當作是一個文件,把stream文件的地點指針指向開頭,明白了?
2.fseek()函數
fseek()函數的作用嘛,將文件地點指針指向指定的地點,例如,往前移動一些距離,往后移動一些距離,像秤上的游標一樣,沒見秤的,自行去百度。
int fseek(FILE * stream, long offset, int whence);
在fseek()函數里面,參數stream還是那個文件指針,參數offset表示移動的距離,參數whence表示文件地點指針原先的地點,就是從哪兒開始移動的。whence有3個取值:
SEEK_SET:對應的數字值為0,表示從文件開頭進行偏移。
SEEK_CUR:對應的數字值為1,相對于文件地點指針目前地點進行偏移。
SEEK_END:對應的數字值為2,相對于文件末尾進行偏移。
fseek()函數如果調用成功,就返回0,調用失敗返回-1。
有一點呢要小心,fseek()函數呢是隨便指的,如果指到一個地點,這種地點呢是一個漢字經歷過字符轉換來的,一個漢字對應三個字符,那么要切時候可能要把漢字切開的,這時候就亂碼了,所以fseek()函數呢,最好用到二進制文件中,不要用到文本文件中。
3.ftell()函數
ftell()函數用來獲取文件地點指針的目前地點,就是fseek()函數你把文件地點指針挪哪兒去了,你得跟你說我一聲啊,那ftell()函數呢就是跟你說你文件地點指針的地點。
long ftell(FILE * stream);
在ftell()函數中,參數stream還是文件指針,ftell()函數調用成功,返回文件地點指針的目前地點,調用失敗,返回-1L,就是-1。
好,學完了三板斧,實踐起來用一下,先在項目目錄下創建個文件,例如hello.txt,就隨機讀寫這種hello.txt文件,上代碼。
#define _CRT_SECURE_NO_WARNINGS
#include
int main()
{
FILE* fp;
char s[16] = { 0 };
fp = fopen(“hellow.txt”, “r”);
fseek(fp, 7, SEEK_SET);
fread(s, 1, 15, fp);
fclose(fp);
printf(“%s”, s);
return 0;
}
關于文件隨機讀寫呢,就這3板斧,第一板斧先把文件地點指針指向文件開頭,調用rewind()函數;第二板斧調用fseek()函數移動文件地點指針;第三板斧調用ftell()函數跟你說我文件地點指針在哪兒。