c語言下的檔案操作函式

2021-05-18 02:24:21 字數 1870 閱讀 4308

這段時間整理c語言的檔案操作函式費了老大勁,太久沒接觸c語言,一開始寫起來很不順心,終於算是整理了一部分函式出來,可以告一段落了.

但是還有一點bug,在對檔案進行寫入操作時,對於寫入資料的長度如果大於寫入字串本身長度的話,這時候該檔案的內容會多出一些莫名其妙的資料,希望遇到過此類問題的朋友告訴我原因.感激不盡!

以下是原始碼示例:

#include

#include

//**************函式宣告 *******************

int f_read(char *,long ,char * ,int);

/*功能:讀檔案

引數:char *filename     要讀的檔案位址

long pos         記錄在檔案中的偏移

char *sdata      儲存所讀資料位址

int len          要讀取的資料長度

返回值:

讀成功       0

其他錯誤     1

*/ int f_exist(char *);

/*功能:判斷檔案是否存在

引數:char *filename     要判斷的檔名

返回值:

存在          0

不存在         1

*/ int f_write(char *,int ,long ,char  *,int );

/*功能:寫檔案

引數:char *filename     要進行寫操作的檔名

int mode   寫模式

1     追加

0     改寫

long pos   記錄在檔案中的偏移,對模式  1 無效

char *sdata  儲存所讀資料位址

int len    寫入的資料長度

返回值:

寫成功       0

其他錯誤      1

*/ //*******************函式定義 ***************

//入口函式

int main(int argc, char *argv)

; //初始化字串陣列為空

//step2: 讀取檔案

f_read("ww.txt",0,data,255);

printf("read file : %s/n",data);

//step3: 寫入檔案

f_write("ww.txt",0,0,"this is a test file.",strlen("this is a test file."));

printf("after writing .../n");

//step4: 讀取檔案

f_read("ww.txt",0,data,255);

printf("read file : %s/n",data);

system("pause"); 

return 0;

}//寫檔案

int f_write(char *filename,int mode,long  pos,char  *sdata,int  len)

}else if(mode==1)

else }

//讀檔案 

int f_read(char *filename,long pos,char *sdata,int len)

char ch=fgetc(fp);

if(ch==eof)

int i=0;

while (i=pos)

*sdata++=ch;

ch=fgetc(fp);

i++;

}fclose(fp); 

return 0;

}

c語言下的自定義qsort函式

一直以為寫法和c 的sort差不多呢,沒想到他的自定義函式部分真的不一樣,想了下c不是沒有泛型嘛,所以不能按照c 那種寫法啊,然後也就接受了這種c的寫法了,確實挺麻煩的,這個 不針對某乙個題,就當作c語言下的qsort函式的結構體變數大小排序的自定義模板了 include include inclu...

C語言檔案操作函式

1.fopen 開啟檔案 相關函式 open,fclose 表頭檔案 include 定義函式 file fopen const char path,const char mode 函式說明 引數path字串包含欲開啟的檔案路徑及檔名,引數mode字串則代表著流形態。mode有下列幾種形態字串 r ...

C語言檔案操作函式

有時候在除錯程式需要進行大量資料的輸入輸出時,如何還是採用scanf printf 的方式進行,那就苦逼了。萬一資料上有一些小改動,那就更苦逼了,所以還是用檔案來幫我們記錄下來,這樣在分析的時候才能更方便一些。再說了,什麼地方都需要用到檔案,所以這個也是個重要的操作啊!需要包含標頭檔案 來乙個小示例...