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中这样好读写一下你看看行不行吧