練習(xí)7-7

對文件中的數(shù)據(jù)進(jìn)行對比,這個程序很實用啊.

復(fù)雜倒是不復(fù)雜.

首先讀取參數(shù).如果碰到'-'((*++argv)[0]這個是下一個參數(shù)的首字符).

然后讀取'-'后面的字符(*++argv[0]沒有括號,這個是剛才參數(shù)的下一個字符,因為argv和[0]先結(jié)合為數(shù)組第0位,然后才自增.)

然后switch對讀取的參數(shù)進(jìn)行判斷然后進(jìn)行記錄.x(except是反向選擇的意思,如果有這個標(biāo)記將打印除了參數(shù)的那一行.)和n顯示行號的選項。

程序需要argc >= 2,程序名加需要查找的句子。

判斷參數(shù)剩余個數(shù),小于1的話是只有一個程序名而沒有要查找的內(nèi)容(前面找參數(shù)的循環(huán)體判斷式中有--argc自減),輸出提示信息。

我研究了半天這個pattern是什么。翻譯的真難看,這個單詞應(yīng)該是需要查找的內(nèi)容的意思。竟然被翻譯成了模式。

正常運行argc最少等于2.前面已經(jīng)自減過了這里就等于1,這里就剩下了那個需要查找的句子。把這個句子復(fù)制到pattern

如果不等于1那就說明后面還有參數(shù),而這個參數(shù)就是需要查找的文件的文件名。

這個是有一個文件名執(zhí)行一次循環(huán),查找該文件。

首先進(jìn)行判斷是否能打開文件,發(fā)生錯誤退出并顯示錯誤信息。

然后調(diào)用fpat函數(shù)。
函數(shù)很簡單。
fgets讀取輸入行,然后通過strstr函數(shù)進(jìn)行判斷。

而是否輸出是看strstr函數(shù)的返回值與那個except參數(shù)是否設(shè)置。
如果找到匹配行,strstr返回1,如果except為1(反向選擇參數(shù)設(shè)置)。
那么判斷式為假,不執(zhí)行操作。
如果找到匹配行,strstr返回1,如果except為0(未設(shè)置參數(shù))。
判斷式為真,執(zhí)行語句。輸出該行。
如果未找到匹配行,strstr返回0,如果except為1(反向選擇參數(shù)設(shè)置)。
那么判斷式為真,執(zhí)行語句,輸出該行。
如果未找到匹配行,strstr返回0,如果except為0(反向選擇參數(shù)未設(shè)置)。
那么判斷式為假,不執(zhí)行操作。

書上的翻譯太次了。根本不知道講的是什么。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容