對於應用程式設計的i/o操作
對於應用程式設計的io操作有兩種函式操作方式,一為直接呼叫系統核心的api操作列open,其次為呼叫c標準的庫函式操作列fopen。系統呼叫方式函式的返回值為控制代碼,而c庫返回的是檔案結構體指標。
以下為系統呼叫方式對於open,lseek,write,read,的簡單使用,具體的設定引數參考手冊輸入即可
#include #include #include #include #include #include #define file_path "./test.txt" //測試檔案路徑
#define file_path2 "./test2.txt" //測試檔案2路徑
main(int argc,char *argv)
else //大於0則開啟成功
if((read(f_id,r_buf,50*sizeof(r_buf))==-1))
else
if(close(f_id)>=0) //關閉檔案
else
scanf("%s",w_buf); //資料寫入緩衝區
printf("輸入緩衝區資料測試:\n");
printf("%s\n",w_buf);
intf("%d\n",w_buf);
//第二次開啟檔案後對檔案的操作
//檔案操作
if((f_id=open(file_path2,o_creat|o_rdwr,777))<0)
else
printf("檔案大小:%d\n",length=(int)lseek(f_id,0,seek_end));//用leesk得到檔案大小
lseek(f_id,0,seek_end);//可以通過此函式移動檔案的讀寫位置重而寫入讀出資料
if(write(f_id,w_buf,10)<0)
else
lseek(f_id,0,0);//得到檔案把檔案的讀寫位置移動到起始位置
if(read(f_id,r_buf,length*sizeof(r_buf))<0)
else
if(close(f_id)>=0) //關閉檔案
else
return 0;
}
c標準庫函式檔案流操作
#include #include #include #define file_path1 "./test.txt" //當前目錄下的txt文字形式檔案
#define file_path2 "./testb" //當前目錄下的二進位制檔案
int main(int argc,char *argv)
fflush(fp);//由於是文字流,所以須得用多加乙個f,用庫函式作用只是在於把緩衝區的資料讀入或讀取,強行擠壓
fwrite(p,strlen(p),1,fp);//此種寫入屬於不帶緩衝的直接寫入相關檔案
printf("fp->flag:%d\n ",fp->_flags);//printf遇回車換行符切換屬於行緩衝
fclose(fp); //用flush函式重新整理輸入與輸出屬於全緩衝,直接緩衝區全部置0
//讀檔案件流測試
if((fp=(file *)fopen(file_path1,"a+"))==null)
printf("第二次打卡成功\n");
fread(out,sizeof(out),2,fp);//除了用用fread讀取也可以用gets得到,此時的文字就相當於使用者介面輸入一樣
fclose(fp);
printf("fread 讀取的資料:%s\n",out);
//fprintf 與fscanf函式的使用和沒有f時時一樣的,只是輸入,輸出的物件不同而已,此時的檔案可以想象成是螢幕
printf("格式化方式輸入輸出檔案測試開始\n");
if((fp=(file *)fopen(file_path1,"a+"))==null)
fprintf(fp,"格式化方式測試資料\n");
fscanf(fp,"%s",out);//除了用用fread讀取也可以用gets得到,此時的文字就相當於使用者介面輸入一樣
fclose(fp); //讀取的資料多少與快取區大小有關,如果要改變讀取位置通fseek函式即可。同時還可以feof函式檢視檔案是否已經讀到尾部
printf("格式化輸入輸出測試資料:%s\n",out);
return 0;
}
系統I O函式與C標準庫函式
先上圖 read write函式常常被稱為 unbuffered i o。指的是無使用者輸入級緩衝區,但不保證不使用核心緩衝區。使用者程式在讀寫檔案時既可以呼叫c標準i o庫函式,也可以直接呼叫底層的系統i o函式,有什麼區別呢?c標準庫的i o緩衝區有三種型別 全緩衝 行緩衝和無緩衝。如果緩衝區寫...
檔案I O之C標準庫函式和系統庫函式差別
1.首先c標準庫函式是工作在系統庫函式之上的。c標準庫函式在讀寫檔案時候都有乙個檔案流指標。file fp null fp fopen f path,r fp檔案流指標,其指向結構體例如以下圖所看到的。檔案描寫敘述符指向磁碟檔案。在進行檔案讀寫操作時候是先讀寫到緩衝區。然後再呼叫系統應用層api w...
常用標準I O庫函式總結
1 fopen fopen 函式主要用於對檔案和終端的輸入輸出。但是如果要對裝置的行為進行更為明確的行為控制,那最好使用底層系統呼叫,因為這樣可以避免庫函式帶來的一些非預期的潛在 函式原型 include file fopen const char filename,const char mode ...