freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c語言代碼統(tǒng)計器-文庫吧

2025-06-13 08:01 本頁面


【正文】 種情況差不多,也是用來防止接收的文件名指針為空。 用戶輸入有誤為了讓用戶更好地使用軟件,就需要有很好的人機對話,當(dāng)用戶輸入錯誤信息的時候,就應(yīng)該有所提示。這款軟件能識別用戶所輸入的參數(shù)是否為文件(夾)路徑,并且會給出相應(yīng)的語言提示。并且,當(dāng)用戶所輸入的文件或文件夾路徑不存在時,也會給出相應(yīng)的提示或警告,從而不會出現(xiàn)統(tǒng)計對象出錯等現(xiàn)象。第4章 概要設(shè)計 路徑判斷為了高效統(tǒng)計用戶所需的代碼文件,就要求統(tǒng)計器能夠批量統(tǒng)計文件夾。因此,首要任務(wù)就是要識別用戶輸入的信息,看用戶所給的路徑名是文件還是文件夾,從而做出相應(yīng)的處理,該部分流程圖如下:判斷完用戶所輸路徑后,就需要對其分開處理。因為該代碼統(tǒng)計器是專門用來統(tǒng)計C語言或C++語言的,所以當(dāng)接收路徑名為文件時,就需要判斷該文件的種類,如果是C或C++程序代碼文件,則直接進行統(tǒng)計;否則報錯,提示用戶文件格式不正確。該部分流程圖如下: 遍歷文件因為要實現(xiàn)批量處理文件,所以如果用戶輸入的是文件夾路徑,就需要對該文件中的所有文件進行遍歷,包括子文件夾中的所有文件,再分別統(tǒng)計出各個文件的相關(guān)信息。文件遍歷是一個很關(guān)鍵的部分,遍歷是否完全關(guān)系到統(tǒng)計的精確度,該統(tǒng)計器采用的是遞歸遍歷法,其流程如下: 字符判斷如果說文件遍歷很重要,那么對文件字符的判斷則是整個程序的核心部分。因為這部分直接關(guān)系到單個文件的統(tǒng)計是否正確。由于代碼中存在許多關(guān)鍵字符,如:“/*”,“*/”,“//”等,這都需要兩個字符連續(xù)判斷,所以在讀取時,需要從文件中連續(xù)讀取兩個字符。該部分還關(guān)系到了文件的打開與讀取,以及文件有效性的判斷和從文件中讀取字符,大致流程如下:字符判斷又分為幾大類: 注釋符:“/*”、“*/”、“//”; 引號:單引號和雙引號; 空白:空格和制表符; 轉(zhuǎn)義字符:如“\\”; 換行符:回車鍵; 其它一般字符。這些字符的判斷以及相應(yīng)的處理在后面會相對詳細的給出說明,這里就不贅述。 信息統(tǒng)計輸出字符判段以及相應(yīng)的處理后,就需要對文件行數(shù)、有效代碼行數(shù)、注釋率等一系列信息進行統(tǒng)計并輸出,然后結(jié)束。大致流程如下:這就是該代碼統(tǒng)計器的設(shè)計思路,至于一些關(guān)鍵部分的處理,接下來會有詳細的說明。第5章 詳細設(shè)計該代碼統(tǒng)計器的關(guān)鍵部分有三個:文件類型的判斷、文件夾的遍歷、文件字符的判斷和變量處理。 文件類型判斷C和C++源代碼文件加起來一共有三類,、.H、.CPP為后綴名,有了這個依據(jù),我們就能準確地從一系列文件中找出我們所需要的這三種文件。在設(shè)計程序時,為了避免有些文件對判斷的干擾(比如:文件名為 *.c.txt 這樣的文件),我們是從文件名末尾開始判斷的。由于由函數(shù)接收來的文件名是正常次序的,因此需要另外設(shè)定函數(shù)將文件名字符串倒置,然后再依據(jù)文件名后綴來進行判斷篩選。值得一提的是,文件命名時不區(qū)別字母大小寫,所以在判斷之前要做一下簡單的處理,那就是把文件名字符串的字符全部轉(zhuǎn)換成小寫或大寫,這樣就避免了同樣的事代碼寫兩遍,顯得啰嗦復(fù)雜,不簡明,使用函數(shù)為“”頭文件下的strlwr( )函數(shù)。具體的字符串倒置和判斷方法見附錄A,代碼中的子函數(shù)int FileJudge(char const *p)部分。單獨將此部分提出來用一個子函數(shù)實現(xiàn)的目的是:以后如果增加了對其它語言的程序代碼文件的統(tǒng)計,只需在此模塊的文件類型的判斷語句上增加一種或幾種文件類型就行了,而不需要改動整個程序 遍歷文件夾前面已經(jīng)粗略提到過遍歷文件夾的方法,這里再做具體的說明。前面講過在頭文件 中,定義了一個結(jié)構(gòu)體:struct _finddata_t{ Unsigned attrib。 /* Attributes, see constants above. */ time_t time_create。 time_t time_access。 /* always midnight local time */ time_t time_write。 _fsize_t size。 char name[FILENAME_MAX]。 /* may include spaces. */}。并且定義了:int __cdecl __MINGW_NOTHROW _findfirst(const char *, struct _finddata_t *);int __cdecl __MINGW_NOTHROW _findnext (long, struct _finddata_t*);int __cdecl __MINGW_NOTHROW _findclose (long) 這三個函數(shù)。利用這三個函數(shù),就能夠?qū)崿F(xiàn)對一個文件夾路徑進行檢索,并返回所給文件夾路徑的子文件或子文件夾指針,并且關(guān)閉文件夾。從而,我們就可以從這個返回的結(jié)構(gòu)體指針中獲取文件夾子目錄的全部相關(guān)信息,例如:文件或文件夾名、文件類型、文件大小以及更改日期等。有了這些信息,我們就能準確的對整個文件夾子目錄中的各個元素進行判斷,也就實現(xiàn)了給定目錄下的文件遍歷了。具體實現(xiàn)的過程請參閱附錄A,代碼中子函數(shù)int TraverseFile (char const *path)部分。正如代碼所示,該代碼統(tǒng)計器是采用遞歸算法來遍歷文件夾的,即如果用戶輸入的文件夾路徑下,有子文件夾,則再對該子文件夾調(diào)用上述函數(shù),直至某一子文件夾沒有子文件夾為止。這段代碼中出現(xiàn)的 FileStatistic() 函數(shù),是寫代碼時自定義的用來對單個文件進行統(tǒng)計的子函數(shù),詳細定義請參閱附錄A中的相應(yīng)部分;MAX_PATH 是宏定義的一個常數(shù),用于接收文件夾路徑,MAX_PATH的定義的值為1024;另外在文件類型判斷處還出現(xiàn)了_A_SUBDIR、_A_ARCH等參數(shù),這是在頭文件中已經(jīng)宏定義好的文件的類型,具體定義如下:define _A_NORMAL 0x00 /* Normal file No read/write restrictions */define _A_RDONLY 0x01 /* Read only file */define _A_HIDDEN 0x02 /* Hidden file */define _A_SYSTEM  0x04 /* System file */define _A_SUBDIR 0x10 /* Subdirectory */define _A_ARCH 0x20 /* Archive file */以上部分就是該代碼統(tǒng)計器十分關(guān)鍵的部分,如果不能實現(xiàn)該部分的功能,即就不能實現(xiàn)文件夾的遍歷,就不能對文件夾批量處理,程序的速度就不能提高。 文件字符的判斷和變量處理這部分是整個項目程序的核心部分,該模塊基本上實現(xiàn)了對單個文件的統(tǒng)計,所以內(nèi)容比較多,這里分開來闡述。 定義變量要想統(tǒng)計一個文件的代碼行數(shù)、注釋行數(shù)、空白行數(shù)、有效代碼行數(shù)等很多相關(guān)信息,必然要用許多變量來分開處理。在該模塊程序設(shè)計中,一共涉及到了十一個靜態(tài)變量,它們分別如下:int static iCountNote = 0。 /*統(tǒng)計注釋行數(shù) */int static iCountCode = 0。 /*統(tǒng)計有效代碼行數(shù) */int static iCountblank = 0。
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1