more指令的實現及檔案操作函式

2021-07-02 02:19:50 字數 1030 閱讀 4330

unix中的more指令是用作分頁顯示大量資訊,並能夠進一步接收使用者的指令來進行後續顯示的命令。使用其可以直接more也可以用管道重定向。可接收的指令有q(退出),空格(新一頁)及回車(新一行)。同時還有閱讀百分比等資訊。

以下用c將其簡單實現:

在其中使用了檔案讀取函式fgetc,fputc等,此類函式通過檔案指標直接對檔案的內容進行讀寫,感覺挺有用的,簡單介紹一下。

char fgetc(file *fp) 

是從檔案指標當前位置讀取一字元,成功則返回字元,同時指標後移一位,結束時返回eof,值為-1。(疑惑:系統如何判定是第一次操作檔案的?初始化時直接將指標指向檔案開始位置麼?對檔案進行fgetc或fgets操作後,如果將此指標用於其他函式是否會出錯?)

char fputc(char ch, file *fp)

將ch字元輸出到檔案當前位置,成功則返回ch,同時指標後移1位,結束返回eof。

char *fgets(char*str, int n, file*fp)

從fp所指檔案當前位置讀入最多n-1個字元,最後自動加上'\0'以結束字串儲存進str陣列中,若在此過程中遇到換行或者結束符時則提前結束讀取過程。

notice:此類檔案操作函式屬於緩衝處理函式,將ch或str寫入檔案指標fp的過程實際上只是寫入了緩衝區(需考證),待程式正常結束後寫入檔案中,若程式未正常結束,則ch或str並不會寫入到檔案中。

程式中還用到檔案的操作函式fopen,fclose等。此函式與系統呼叫函式open,close函式不同,通過檔案指標file *對檔案操作,而不是檔案套接字,此中區別及優劣可以另外討論,此處記錄下我之前的疑問點,主要是指標方面。

函式file *fopen(const char *path, const char*mode),程式中用到了fp=fopen(*++argv, "r")的表示方法。argv是包含命令中引數的陣列,因此argv實際上是乙個二級指標,其內陣列的每格存放乙個指向變數的指標。因此在使用fopen時。fp=fopen(argv[x],"r")或fp=fopen(*++argv,"r"),用argv自加的形式可減少一層迴圈巢狀。

檔案操作實現cp指令

1.引數 了解c語言中的引數 2.思路 a.開啟fdsrc b.讀取fdsrc中的檔案到readbuf中 c.開啟 建立檔案fddes d.將readbuf寫入到fddes中去,e.close兩個檔案 否則會造成檔案損壞 f.避免浪費空間,可以使用lseek讀取檔案大小 include intmai...

php操作檔案的函式,php常用檔案操作函式彙總

這裡蒐集了大量的php中檔案操作函式如有檔案開啟,建立,刪除,更變組,讀取寫檔案,檔案上傳以及開啟遠端檔案,把內容寫入檔案等例項.fp fopen test.txt r 以唯讀方式開啟檔案,將檔案指標指向檔案頭 fp fopen test.txt r 以讀寫方式開啟檔案,將檔案指標指向檔案頭 fp ...

Linux 檔案儲存方式及基本操作指令的介紹

linux下所有檔案都是從根目錄 開始儲存,它的儲存結構是乙個倒狀樹的結構。bin 命令對應的可執行檔案 etc 系統的配置目錄 系統或者其他軟體的配置檔案 mnt 臨時掛載點 boot 系統啟動時所需要的核心映象檔案 proc 虛擬目錄,以程序為單位儲存記憶體的對映 統計資訊 usr unix s...