系統函式I O操作與標準庫函式流操作

2021-07-16 10:51:54 字數 2261 閱讀 1194

對於應用程式設計的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 ...