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

正文內(nèi)容

c語(yǔ)言代碼統(tǒng)計(jì)器-文庫(kù)吧資料

2025-07-04 08:01本頁(yè)面
  

【正文】 ****************** Function name: CharJudge** Descriptions: 判斷文件中的單個(gè)字符,并改變相關(guān)的變量***************************************************************************/int CharJudge(char ch, char NextCh, int k){ int static iCountNote = 0。統(tǒng)計(jì)并顯示的數(shù)據(jù)分別是: 單個(gè)文件:代碼行數(shù)、有效代碼行數(shù)、注釋行數(shù)、空白行數(shù)、注釋率; 文件夾:除了該文件夾中所有文件的相關(guān)信息外,還統(tǒng)計(jì)了文件夾中的文件總數(shù)、代碼總行數(shù)、有效代碼總行數(shù)、總注釋行數(shù)、總空白行數(shù)、還有總注釋率。第6章 設(shè)計(jì)結(jié)果和使用說(shuō)明 程序運(yùn)行界面開(kāi)始界面:?jiǎn)蝹€(gè)文件統(tǒng)計(jì)界面:文件夾統(tǒng)計(jì)界面:上圖是對(duì)文件夾中子文件夾的文件進(jìn)行統(tǒng)計(jì)上圖是輸出整個(gè)文件夾的整體信息 使用說(shuō)明該統(tǒng)計(jì)器由于是控制臺(tái)程序,所以操作十分簡(jiǎn)單。amp。由于換一行之后,所有情況都是未知的,所以在換行符這里還要對(duì)各個(gè)數(shù)據(jù)進(jìn)行初始化。}這里只說(shuō)了雙引號(hào)的處理,單引號(hào)同樣的處理,這里不再贅述。amp。\\39。amp。\\39。 (iQuotation_mark1 || iQuotation_mark2)){ /* 排除轉(zhuǎn)義字符\在字符串中的干擾*/ i = 0。 == NextCh amp。 39。 == ch amp。大致代碼如下:else if (39。 轉(zhuǎn)義字符有幾個(gè)特殊的轉(zhuǎn)義字符:“\\”、“\’”、“\””,這三個(gè)字符它們會(huì)互相干擾,比如在字符串中出現(xiàn)“\”” ,就會(huì)導(dǎo)致字符串的邊界判斷出錯(cuò),所以把它們單獨(dú)列出來(lái)處理。這是為了避免“/*/”這樣的字符串,有了這個(gè)i的判斷后,就不會(huì)出現(xiàn)統(tǒng)計(jì)完“/*”馬上統(tǒng)計(jì)“*/”的情況,而是跳過(guò)“*/”統(tǒng)計(jì)下一對(duì)字符。另外還有兩處出現(xiàn)如下語(yǔ)句:if (iHaveNote == 0){ i = 0。 }這里只說(shuō)明了“/*…*/”的處理,“//…..”同理。 } iC_or_N = 1。amp。amp。amp。*39。amp。/39。詳細(xì)使用見(jiàn)附錄A中相應(yīng)部分。有必要說(shuō)明的是,這里全都定義成了靜態(tài)變量,這樣做的目的是在遞歸調(diào)用該函數(shù)時(shí),保持這些變量不改變,其作用相當(dāng)于全局變量。 /*判斷字符是否在引號(hào)中 */int static i = 1。 /*判斷該行是否有注釋*/ int static iC_or_N2 = 0, iC_or_N = 0。 /*統(tǒng)計(jì)代碼總行數(shù) */int static iHaveCode = 0。 /*統(tǒng)計(jì)有效代碼行數(shù) */int static iCountblank = 0。在該模塊程序設(shè)計(jì)中,一共涉及到了十一個(gè)靜態(tài)變量,它們分別如下:int static iCountNote = 0。 文件字符的判斷和變量處理這部分是整個(gè)項(xiàng)目程序的核心部分,該模塊基本上實(shí)現(xiàn)了對(duì)單個(gè)文件的統(tǒng)計(jì),所以內(nèi)容比較多,這里分開(kāi)來(lái)闡述。正如代碼所示,該代碼統(tǒng)計(jì)器是采用遞歸算法來(lái)遍歷文件夾的,即如果用戶輸入的文件夾路徑下,有子文件夾,則再對(duì)該子文件夾調(diào)用上述函數(shù),直至某一子文件夾沒(méi)有子文件夾為止。有了這些信息,我們就能準(zhǔn)確的對(duì)整個(gè)文件夾子目錄中的各個(gè)元素進(jìn)行判斷,也就實(shí)現(xiàn)了給定目錄下的文件遍歷了。利用這三個(gè)函數(shù),就能夠?qū)崿F(xiàn)對(duì)一個(gè)文件夾路徑進(jìn)行檢索,并返回所給文件夾路徑的子文件或子文件夾指針,并且關(guān)閉文件夾。 /* may include spaces. */}。 _fsize_t size。 time_t time_access。前面講過(guò)在頭文件 中,定義了一個(gè)結(jié)構(gòu)體:struct _finddata_t{ Unsigned attrib。具體的字符串倒置和判斷方法見(jiàn)附錄A,代碼中的子函數(shù)int FileJudge(char const *p)部分。由于由函數(shù)接收來(lái)的文件名是正常次序的,因此需要另外設(shè)定函數(shù)將文件名字符串倒置,然后再依據(jù)文件名后綴來(lái)進(jìn)行判斷篩選。 文件類型判斷C和C++源代碼文件加起來(lái)一共有三類,、.H、.CPP為后綴名,有了這個(gè)依據(jù),我們就能準(zhǔn)確地從一系列文件中找出我們所需要的這三種文件。大致流程如下:這就是該代碼統(tǒng)計(jì)器的設(shè)計(jì)思路,至于一些關(guān)鍵部分的處理,接下來(lái)會(huì)有詳細(xì)的說(shuō)明。這些字符的判斷以及相應(yīng)的處理在后面會(huì)相對(duì)詳細(xì)的給出說(shuō)明,這里就不贅述。由于代碼中存在許多關(guān)鍵字符,如:“/*”,“*/”,“//”等,這都需要兩個(gè)字符連續(xù)判斷,所以在讀取時(shí),需要從文件中連續(xù)讀取兩個(gè)字符。文件遍歷是一個(gè)很關(guān)鍵的部分,遍歷是否完全關(guān)系到統(tǒng)計(jì)的精確度,該統(tǒng)計(jì)器采用的是遞歸遍歷法,其流程如下: 字符判斷如果說(shuō)文件遍歷很重要,那么對(duì)文件字符的判斷則是整個(gè)程序的核心部分。因?yàn)樵摯a統(tǒng)計(jì)器是專門用來(lái)統(tǒng)計(jì)C語(yǔ)言或C++語(yǔ)言的,所以當(dāng)接收路徑名為文件時(shí),就需要判斷該文件的種類,如果是C或C++程序代碼文件,則直接進(jìn)行統(tǒng)計(jì);否則報(bào)錯(cuò),提示用戶文件格式不正確。第4章 概要設(shè)計(jì) 路徑判斷為了高效統(tǒng)計(jì)用戶所需的代碼文件,就要求統(tǒng)計(jì)器能夠批量統(tǒng)計(jì)文件夾。這款軟件能識(shí)別用戶所輸入的參數(shù)是否為文件(夾)路徑,并且會(huì)給出相應(yīng)的語(yǔ)言提示。 在判斷文件是否為C或C++代碼文件時(shí),和第二種情況差不多,也是用來(lái)防止接收的文件名指針為空。 在遞歸遍歷文件夾時(shí),函數(shù)入口參數(shù)是一個(gè)指針變量,接受文件夾路徑。為了防止指針出錯(cuò),本程序在關(guān)鍵處使用了C標(biāo)準(zhǔn)庫(kù)函數(shù)中,頭文件下void assert(int exp) 這個(gè)函數(shù),它是用于表達(dá)式結(jié)果的正確性測(cè)試并且當(dāng)表達(dá)式結(jié)果為假時(shí)使程序終止。這樣做減少了函數(shù)之間值的地址的傳遞,出錯(cuò)也就更少,安全性也就越高。為此,在該統(tǒng)計(jì)器的程序設(shè)計(jì)中,一共使用了五個(gè)全局變量、九個(gè)靜態(tài)變量。 變量處理由于要統(tǒng)計(jì)代碼源文件中的文件行數(shù)、代碼函數(shù)、注釋行數(shù)、空白行數(shù)等信息,則需要使用多個(gè)變量來(lái)分別統(tǒng)計(jì)各種信息。從而,我們就可以從這個(gè)返回的結(jié)構(gòu)體指針中獲取文件夾子目錄的全部相關(guān)信息,例如:文件或文件夾名、文件類型、文件大小以及更改日期等得知這些信息之后,我們只需要對(duì)不同類型的文件分別進(jìn)行處理,就能實(shí)現(xiàn)對(duì)整個(gè)目錄的遍歷。}。 _fsize_t size。 time_t time_access。 遍歷文件夾 在頭文件 中,定義了一個(gè)結(jié)構(gòu)體:struct _finddata_t { unsigned attrib。int fclose(void) :關(guān)閉所有已打開(kāi)的文件。由于該程序中需要連續(xù)讀取兩個(gè)字符,而這個(gè)函數(shù)在讀取時(shí)會(huì)自動(dòng)移動(dòng)文件內(nèi)部指針,所以必須采取特殊措施才能實(shí)現(xiàn)連續(xù)讀取。為什么選只讀呢?因?yàn)橐灾蛔x方式打開(kāi)的文件,無(wú)論是否有其他程序在使用它,都不會(huì)影響到對(duì)它的統(tǒng)計(jì),這樣使用起來(lái)也是更加的方便。 文件的打開(kāi)與讀取在C標(biāo)準(zhǔn)庫(kù)函數(shù)中,頭文件下包含了各種輸入輸出函數(shù),其中就包括了實(shí)現(xiàn)文件操作的一系列函數(shù):FILE *fopen(char *filename, char *mode) :以指定的方式打開(kāi)一個(gè)文件。由于該代碼統(tǒng)計(jì)器是在DOS下運(yùn)行的控制臺(tái)程序
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1