C 學(xué)習(xí)-統(tǒng)計(jì)附件wordCount.txt中每個單詞出現(xiàn)的次數(shù)

  1. 編寫c程序,統(tǒng)計(jì)附件wordCount.txt中每個單詞出現(xiàn)的次數(shù)
    要求:分別使用帶緩存以及不帶緩存的文件讀寫方式

單詞文本如下:
Eric Rice walked along the Venice Beach boardwalk on a balmy February afternoon, his eyes peeled.
He was searching for Jacob, a homeless person around 20 years old he`d met at a Safe Place for Youth,
a drop-in center where Rice has done research and volunteered. An hour later he found Jacob on the beach,
passing a joint back and forth with friends. Rice told Jacob he`d been selected as a peer educator for a pilot HIV education program.
Jacob had never struck Rice as an exemplary leader; he usually was high when he came by the center, and he stayed far from adults.
But Rice hadn`t picked Jacob - an algorithm did.
The machine learning had undercut human assumptions. When Rice pulled up to the center at 8:30 the next morning for training,
Jacob was waiting with his skateboard and a cup of coffee. Throughout the project, he proved to be a crucial connector to homeless youth living in Venice, Rice says.

實(shí)現(xiàn)代碼如下:

/*
 * @Author: Zedi Liu 
 * @Date: 2019-04-25 14:09:42 
 * @Last Modified by: Zedi Liu
 * @Last Modified time: 2019-04-25 16:52:15
 */

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<sys/time.h>
#include<unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

//針對fscanf函數(shù) ,去除單詞后帶上的符號(",",".",";")
//因?yàn)閒scanf函數(shù)是讀取一個字符串瞬沦,因此單詞后面有符號時,也會被讀取
void dealwith(char a[][30],int len);

//統(tǒng)計(jì)單詞出現(xiàn)的次數(shù)
//沒有對符號進(jìn)行過濾
void statistical(char a[][30],int len);

//大寫英文字母轉(zhuǎn)換成小寫
void toLower(char a[]);

//快速排序
void quicksort(char array[][30],int start,int end);

//結(jié)構(gòu)體Word 用于存儲單詞和出現(xiàn)次數(shù)
struct Word
{
  char *word;
  int times;
};

int main(){
    char a[200][30];
    FILE *fp;
    int index=0; 
    int fd;   

    //以下打了注釋的是使用帶緩存的fscanf函數(shù)從文本讀取word
    // if ((fp=fopen("/media/lzd/1A12F4A712F488D1/學(xué)習(xí)/Linux/期中考試/5/wordCount.txt","r"))==NULL)
    // {
    //     printf("input file open failed!\n");
    //     return 1;
    // }
   
    // while (fscanf(fp,"%s",a[index])!=EOF)
    // {
    //    index++;       
    // }
    // fclose(fp);  //關(guān)閉文件
    // fp=NULL;

    //以下是使用不帶緩存的read函數(shù)從文本讀取word
    if ((fd=open("/media/lzd/1A12F4A712F488D1/學(xué)習(xí)/Linux/期中考試/5/wordCount.txt",O_RDONLY))<0)
    {
        printf("input file open failed!\n");
        return 1;
    }
    char ch;
    int j=0;
    while ((read(fd,&ch,1))>0)
    {
      if (ch=='\n'||ch=='\0'||ch==' '||ch==','||ch==';'||ch=='.') //每個char[][]存儲一個字符倦畅,并過濾符號
      {
        a[index][j]='\0';            //判斷是一個字符
        index++;
        j=0;
        ch=' ';
      }
      a[index][j]=ch;
      j++;
    }
    close(fd); //關(guān)閉文件
    for (int j = 0; j < index; j++)
    {
      printf("%d  ::  %s\n",j,a[j]);
    }

    dealwith(a,index);
    quickSort(a,0,index-1);
    statistical(a,index);
    return 0;
}

//大寫英文字母轉(zhuǎn)換成小寫
void toLower(char a[]){
   for(int i=0;a[i]!='\0';i++)
        if(a[i]>='A'&&a[i]<='Z') 
            a[i]+=32;
}

//針對fscanf函數(shù) 叠赐,去除單詞后帶上的符號(",",".",";")
//因?yàn)閒scanf函數(shù)是讀取一個字符串欲账,因此單詞后面有符號時芭概,也會被讀取
void dealwith(char a[][30],int len){

  for (int i = 0; i < len; i++)
  {
    toLower(a[i]);
    if (strstr(a[i],".")||strstr(a[i],",")||strstr(a[i],";"))
    {
      int j=0;
      while (a[i][j]!='\0')
      {
        j++;
      }
      a[i][--j]='\0';
      printf("%s\n",a[i]);
    }
  }
}

//統(tǒng)計(jì)單詞出現(xiàn)的次數(shù)
//沒有對符號進(jìn)行過濾
void statistical(char a[][30],int len){
  struct Word word[150];
  struct Word *p=&word[0];
  int j=1;
  char b[30];
  strcpy(b,a[0]);
  p->word=b;
  p->times=1;
  for (int i = 0; i < len; i++)
  {
    if (strcmp(b,a[i])==0)
    {
      p->times++;
    }
    else
    {
      strcpy(b,a[i]);
      (++p)->word=a[i];
      p->times=1;
      j++;
    } 
  }
  for (; j > 1; j--)
  {
    printf("單詞如下:%s,   次數(shù):%d\n",p->word,p->times);   //倒序輸出
    p--;
  }
}

//快速排序代碼代碼如下
void quicksort(char array[][30],int start,int end){

    int i=start;
    int j=end;
    char c[30];
    
    if (start<end)
    {
        strcpy(c,array[i]);
        while(i<j){
            while(j>i&&strcmp(c,array[j])<0){
                j--;
            }
            if (i<j) {
                strcpy(array[i],array[j]);
                i++;
            }
            while(j>i&&strcmp(c,array[i])>0){
                i++;
            }
            if(i<j){
                strcpy(array[j],array[i]);
                j--;
            } 
    }
    strcpy(array[i],c);
    sort(array,start,i-1);
    sort(array,i+1,end);
    }
}

運(yùn)行結(jié)果如下:


1.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末踢故,一起剝皮案震驚了整個濱河市惹苗,隨后出現(xiàn)的幾起案子殿较,更是在濱河造成了極大的恐慌桩蓉,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洽瞬,死亡現(xiàn)場離奇詭異业汰,居然都是意外死亡伙窃,警方通過查閱死者的電腦和手機(jī)样漆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來产场,“玉大人舞竿,你說我怎么就攤上這事∑保” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵鄙皇,是天一觀的道長。 經(jīng)常有香客問我伴逸,道長膘壶,這世上最難降的妖魔是什么错蝴? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任顷锰,我火速辦了婚禮柬赐,結(jié)果婚禮上官紫,老公的妹妹穿的比我還像新娘。我一直安慰自己束世,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布后添。 她就那樣靜靜地躺著薪丁,像睡著了一般馅精。 火紅的嫁衣襯著肌膚如雪严嗜。 梳的紋絲不亂的頭發(fā)上洲敢,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機(jī)與錄音睦优,去河邊找鬼。 笑死汗盘,一個胖子當(dāng)著我的面吹牛询一,可吹牛的內(nèi)容都是我干的隐孽。 我是一名探鬼主播健蕊,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼晴及!你這毒婦竟也來了嫡锌?” 一聲冷哼從身側(cè)響起抗俄,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤动雹,失蹤者是張志新(化名)和其女友劉穎槽卫,沒想到半個月后胰蝠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡躲庄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年钾虐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片效扫。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖浩习,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谱秽,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布疟赊,位于F島的核電站峡碉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏异赫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一鼠证、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧量九,春花似錦、人聲如沸荠列。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至川队,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間固额,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工逝慧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留啄糙,地道東北人笛臣。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓迈套,卻偏偏與公主長得像碱鳞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子窿给,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359