這段時間整理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 的方式進行,那就苦逼了。萬一資料上有一些小改動,那就更苦逼了,所以還是用檔案來幫我們記錄下來,這樣在分析的時候才能更方便一些。再說了,什麼地方都需要用到檔案,所以這個也是個重要的操作啊!需要包含標頭檔案 來乙個小示例...