c語言統計單詞出現次數
Ⅰ c語言小白求問。如何讀取字元串文件,並根據不同長度的單詞統計總共出現的頻率
看你問題演示,是統計一段英文文字中,不同單詞出現次數(但world明明只出現1次,你演示代碼卻輸出的是咐前2)。
如想統計一段文件中的英文單詞出現次數。需實現以下功能:
一、遍歷字元串,通過分割符號空格及標點符號獲取單詞數組。
二、大小寫轉換,把數組單詞全部轉換為大寫或者小寫(識別同一個單詞不返團同大小寫)。
三、遍歷單詞數組,累加統計每個單詞數量。(可遍歷到第一個單詞作為當前統計對象,之後每遍歷到相同單詞,就將對應變數計數+1,並將該單詞字元串置0)。
思路:可先用fopen打開文件流,之後用fgets把全文讀出到字元串變數。
之後兩個選擇:
1、直接變數字元串,遇字母作為一漏簡橘個單詞開始,遇非字母作為一個字母結束,這樣把所有單詞,拆出來放到字元串數組中。(大小寫轉換可同時進行)。
2、變數字元串將所有標點符號全部替換成空格,再用fprintf寫入覆蓋原文件,再用循環fscanf(返回-1表示讀取結束),將所有以空格間隔的單詞直接讀取到字元串數組。
最後變數字元串數組。
Ⅱ c語言程序設計:1,統計英文文本中單詞個數。2,統計某一特定單詞出現的頻度。
1、統計英文文本中單詞個數。
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')) sum++;
2、統計某一特定單詞出現的頻度。
for(i=0;i!='/0';i++)
{
if(a[i]=='特定單詞')
sum++;
}
(2)c語言統計單詞出現次數擴展閱讀:
if語句的一般形式如下:
if(表達式)語句1
[else語句2]
if語句中的「表達式」可以是關系表達式、邏輯表達式,甚至是數值表達式。其中最直觀、最容易理解的是關系表達式。所謂關系表達式就是兩個數值進行比較的式子。
for循環小括弧里第一個「;」號前為一個為不參與循環的單次表達式,其可作為某一變數的初始化賦值語句, 用來給循環控制變數賦初值。
Ⅲ 如何用c語言完成統計一個句子中每個單詞出現的次數啊是用c語言,不要用c++,謝謝大家了
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedefstructWord{
charw[20];
intk;
structWord*next;
}pWord;
intmain(intargc,char*argv[])
{
FILE*fp=fopen("input.txt","r");
structWord*Head=NULL;
while(!feof(fp)){
char*p=(char*)malloc(20*sizeof(char));
fscanf(fp,"%s",p);
if(Head==NULL){
structWord*temp=(structWord*)malloc(sizeof(structWord));
strcpy(temp->w,p);
temp->k=1;
temp->next=NULL;
Head=temp;
}else{
structWord*pp=Head;
while(pp!=NULL){
if(strcasecmp(pp->w,p)==0){
++pp->k;
break;
}else{
pp=pp->next;
}
}
if(pp==NULL){
structWord*temp=(structWord*)malloc(sizeof(structWord));
strcpy(temp->w,p);
temp->k=1;
temp->next=Head;
Head=temp;
}
}
}
structWord*q=Head;
while(q!=NULL){
printf("%s",q->w);
printf("%d ",q->k);
q=q->next;
}
return0;
}/*------endofmain------*
我是把要讀寫的東西放進了一個input.txt中這樣好讀寫一下你看看行不行吧