C Linux 下簡單實現單詞統計

2021-07-03 17:50:42 字數 2299 閱讀 2843

/*

功能實現:

從文字文件裡讀取英文單詞,可能含有中文字元,

實現英文單詞,中文字元的數目統計

author :賀榮偉

creat time: 16:01 2015/7/10 星期五

#include #include #include #include #include const int str_len=1010;

char str[str_len];

bool vis[str_len];

typedef long long ll;

typedef unsigned long long llu;

int word_count,hanzi_count;

void is_word();

void is_hanzi(); /*

//fgets 方法:char *fgets(char *string, int n, file *stream)

從檔案stream中讀取n-1個字元/一行(若一行不滿n-1個),string接收

字串如果n <= 0,返回null

如果n == 1,返回" ",也就是乙個空串

如果成功,返回值等於string, 也就是獲得字串的首位址

//如果出錯,或者讀到file的結尾,返回null.

file *textfile=fopen("text.txt","r");///開啟乙個檔案

while(fgets(str,str_len,textfile)!=null)

fclose(textfile);*/

void is_word()

while(fgets(str,str_len,fp)!=null) /*fgets 的定向輸入,獲取輸入流的長度 */

fclose(fp);

for(int i=0; i='a'&&ch<='z'||ch>='a'&&ch<='z')

else if((flag==0)&&(ch!='-'&&ch!='/'&&ch!='\''))

}fclose(fp);

*/printf("單詞個數為: %d 個\n",word_count);}

void is_hanzi()

while(!feof(fp))

}fclose(fp);

printf("中文字元為: %d 個\n",hanzi_count);

}int main()

測試:

linux系統命令行統計文字單詞個數及出現頻率:

引數:wc  -w,  text.txt

列印單詞數(print the word counts)

測試:文字內容:

we are two boy

結果 4

統計單詞出現頻率:

這個剛學shell,有些不懂,查詢書籍資料和網上資源,知道是這樣這樣寫:

命令列:

cat text.txt |tr -cs "[a-z][a-z]" "[\012*]"|tr a-z a-z|sort|uniq -c|sort -k1nr -k2|head -10

簡單分析:cat text.txt:表示建立乙個檔案。

tr 命令:tr是transform的縮寫,該命令是著名的流處理命令sed的簡化版,也是用來對文件進行轉換的。

tr -cs 「[a-z][a-z]" "\n"  -c表示取「[a-z][a-z]"的補集(complement),-s 表示把連續的匹配壓縮成乙個」\012「,*號表示將集合2中的字元補全,與集合1的字元長度一致,所以整個命令就是把除了字母外的其他字元一律壓縮成換行符,如果有連續的匹配,則只轉換成乙個換行符。

tr a-z a-z 把大寫統一轉換成小寫。

sort 排序 按字母順序

uniq 去重 該命令必須對排序好的文件進行,-c 表示列印出字母的重複次數

然後再次 sort ,這次sort比較複雜,因為在uniq命令後 輸出結果已經變成了 如下形式:

n word (單詞的重複次數+空格+單詞)

所以 -k1nr表示對第一列(-k1)的數字形式(-n)的變數進行逆序(-r 從大到小)排列 , -k2表示在前面的排序基礎上對重複次數一致的單詞進行按字母順序的排列。

最後是head -n$1,表示只顯示結果的前$1行。

文字內容:

we are to boy

結果:1 are

1 boy

1 to

1 we(均出現一次)

C Linux下簡單實現單詞統計

功能實現 從文字文件裡讀取英文單詞,可能含有中文字元,實現英文單詞,中文字元的數目統計 author 賀榮偉 creat time 16 01 2015 7 10 星期五 include include include include include const int str len 1010 c...

C linux下實現ls 函式遍歷目錄

需求 在linux下遍歷目錄,輸出目錄中各檔名。include dir opendir const char dir path struct dirent readdir dir dirp int closedir dir dirp int lstat const chat filename,str...

spak 單詞統計簡單例子

spark預設頁面ui 對應配置檔案 sh start all.sh 啟動命令 spark shell啟動 jps看下多了乙個sparksubmit程序 啟動後後台日誌啟動了job的頁面 編寫個本地檔案 為了後面測試 裝載到rdd中 單詞統計第一種寫法 sc.textfile home hadoop...