不關注《一碳科技》?那麼你會錯過很多乾貨哦!
前言
今天的文章跟大家講一下,C語言中的文件操作——遍歷文件夾和刪除文件,以及如何應用這兩個技能來寫一個有趣的小程序,這篇文章涉及的知識點很少,也很簡單,所以這篇文章就當做給小白們的小教程吧,讓你們每天都能充滿激情地學習編程,擺脫學習C語言枯燥乏味的過程。
今天要教的東西很簡單,所以就別害怕自己學不會啦,在之前的作品中,經常能看到諸如「好難」、「我學不會」、「我沒天賦」等消極的留言,其實,說一句實話,C語言在所有程式語言中,是相對簡單且最強大的一門程式語言,很多時候,學會C語言就相當於學會了其他程式語言,因為語言實現相通的。
廢話就不講那麼多了,直接進入主題,上菜!
今天,我們圍繞著「遍歷文件夾」以及「刪除文件」這兩個話題,來實現我們的小程序,在今天的程序中,我們將會用到三個頭文件,分別是stdio.h、io.h、string.h,其中,io.h對於大家來說可能會有點陌生,io.h包含了許多文件操作函數,而這些函數在我們剛開始的學習中是不經常用到的。除了這三個頭文件之外,我們還會用到一個新的結構體——_finddata_t,簡單來說,這個結構體就是用來存放文件信息的,例如文件大小、屬性、名稱等信息,在下面我們會詳細講到。
從上圖可以看到,我們在整個程序中,只是構建了一個名為del()的函數,所以說,今天的文章讀起來是特別的簡單的。顧名思義,這個函數就是用來刪除某種東西的,刪除什麼呢?注意看好,刪除指定路徑下特定類型的文件。在小編寫的這個程序中,會自動遍歷F盤中的EXE類型文件,並將它們全部刪除,這個只是程序的主體,剩下功能的就靠你們自己點綴啦。
開始構建del()函數
首先創建一個存放路徑的數組way[],和一個存放文件信息的_finddata_t結構體,在這個程序裡,小編在生成可執行文件之前,就把想要刪除的「指定路徑」存入了way[]數組中,為什麼呢?因為這樣別人就看不到了呀!在這裡要注意的是格式,例如指定的路徑是F盤的根目錄,我們要這樣寫:「F:\\」,總結起來的格式是這樣的:「X:\\XX\\XX\\*.exe」。有些人可能問,這裡的「*」符號是什麼意思呢?
星號(*)其實是一個通配符,問號(?)也是一個通配符。這兩個符號有什麼作用呢?舉一個你們熟悉的例子——模糊查找。星號可以代表0個或多個字符,怎麼代表呢?請看,假如這裡用love*來表示,那麼love*這個詞,對應的詞有很多,例如:loveyou、loveme、lovelove等,為什麼呢?因為*代替了後面的字符,不管後面的字符是什麼。我們的程序中有這樣一個語句——"F:\\*.exe",這行語句的意思就是F盤根目錄下所有以.exe結尾的文件。
那麼問號(?)又怎麼解釋?「?」和「*」差不多,只不過「?」只能代表一個字符。舉個例子,在這幾個詞中:「abc」、「ahc」、「abcde」、「abcdef」,「a?c」只能代表「abc」和「ahc」,而不能代表剩下的兩個。
▲第一次查找文件
首次查找文件我們要用_findfirst(),這個函數有兩個參數,一個是查找的文件(可直接填文件路徑),一個儲存文件信息的結構體。查找文件我們直接"F:\\*.exe"代替,儲存文件信息的結構體,我們用先前聲明的_finddata_t結構體代替。
_finddata_t一共5個參數:
time_t time_create:保存從1970年1月1日0時0分0秒到現在時刻的秒數time_t time_access:文件最後一次被訪問的時間。time_t time_write:文件最後一次被修改的時間。_fsize_t size:文件的大小。char name[_MAX_FNAME]:文件的文件名。
▲用while()循環遍歷整個文件夾
在這裡,我們用while()循環遍歷了整個文件夾,並將文件名稱傳給remove()函數,這個函數是刪除指定名稱的文件(可以直接輸入路徑),刪除之後又將路徑初始化成"F:\\",重新使用_findnext()函數查找,_findnext()與_findfirst()稍有不同,_findnext()用在第一次查找,剩下的查找交給_findfirst(),程序末尾用_findclose()函數關閉文件。
如何獲取源碼?
先關注+轉發,然後注意評論區,《一碳科技》會根據關注人數和轉發數量來判斷是否公布源碼哦!