C语言——从字符串中统计单词的频数
C语言——从字符串中统计单词的频数
#include<stdio.h>
#include<string.h>
#include<malloc.h>typedef struct node{char word[20];int count;struct node* next;
}node;
typedef node* LinkList;LinkList InitList();
void GetWord(char *s,LinkList head);
void WordToLinkList(LinkList head,char* s);
void PrintList(LinkList head);int main(){char str[10000]={'\0'};char temp[1000];char path[] = "number.in";FILE* in = fopen(path,"r");if(!in){printf("File can't be opened!\n");exit(0);}while(fgets(temp,sizeof(temp),in)!=NULL){if(temp[strlen(temp)-1] == '\n') //去掉每一行末尾的换行符temp[strlen(temp)-1] = '\0';strcat(str,temp); //将所有行的字符合并到一行}LinkList head = InitList(); //初始化链表GetWord(str,head); //获取单词并添加到链表中PrintList(head);fclose(in);system("pause");return 0;
}LinkList InitList(){ //初始化链表,获得头结点LinkList head = (LinkList)malloc(sizeof(node));head->word[0] = '\0';head->next = NULL;return head;
}void GetWord(char *s,LinkList head){char *p;char delim[] = " ,."; //分隔符p = strtok(s,delim); //将字符串按照分隔符进行分隔//strtok函数只是将分隔符都设置为'\0',并没有生成多个字符串,采用while(p!=NULL){WordToLinkList(head,p); //将每一个单词传进链表中,生成结点p = strtok(NULL,delim); //p继续指向下一个字符串开头}
}void WordToLinkList(LinkList head,char* s){LinkList q = head->next;int isExit = 0;while(q){if(strcmp(q->word,s)==0){ //存在结点,计数值+1q->count++;isExit = 1;break;}q = q->next;}if(!isExit){ //不存在则创建结点LinkList temp = (LinkList)malloc(sizeof(node));strcpy(temp->word,s);temp->count=1;temp->next = head->next;head->next = temp;}
}void PrintList(LinkList head){ //输出链表中各结点的值LinkList p = head->next;while(p!=NULL){printf("%s:%d\n",p->word,p->count);p = p->next;}
}
C语言——从字符串中统计单词的频数相关推荐
- 字符串中统计单词个数
用到的几个小知识 : 1.字符串流是以空格作为一个字符串的结束标志,采用stringstream来提取单词. 2.为了消除重复单词,需要先将vector排序,使得重复的单词相邻出现,不先排序无法正确& ...
- 习题:统计字符串中的单词个数
1 /*统计字符串中的单词个数*/ 2 #include<stdio.h> 3 int main(void) 4 { 5 char a[80]={""},c; 6 in ...
- c语言求出字符串最长单词,C语言 在字符串中找到最长单词
满意答案 路飞的潮人店 2014.05.10 采纳率:59% 等级:9 已帮助:464人 我新写了一个,你看下吧, 主要用到了strtok()这个函数, 这个函数在做字符串切割时很有用的... ...
- 使用C语言分析分析英文字符串中的单词
@[TOC] 使用C语言分析分析英文字符串中的单词 分析英文字符串时会产生的问题 比如一句英文: we eat dinner at four o'clock,noodles is delicious. ...
- 统计字符串中每个单词出现的次数
字符串"wo ai java abc java abc wo",统计字符串中每个单词出现的次数 package work;import java.awt.RenderingHint ...
- 如何遍历字符串中的单词?
我正在尝试遍历字符串中的单词. 可以假定字符串由空格分隔的单词组成. 请注意,我对C字符串函数或那种字符操作/访问不感兴趣. 另外,在回答问题时,请优先考虑优雅而不是效率. 我目前拥有的最佳解决方案是 ...
- 删除字符串中各单词间多余空格
删除字符串中各单词间多余空格 编程实现删除字符串中各单词间多余空格,只保留一个空格.如果字首字符中有连续空格,应完全删除:如果非字母字符前后有空格应该将空格完全删除:如果末尾是一连续空格也应将其删除. ...
- 如何大写字符串中每个单词的第一个字符
Java中是否内置了一个函数,该函数可以大写字符串中每个单词的第一个字符,而不会影响其他单词? 例子: jon skeet - > Jon Skeet miles o'Brien > Mi ...
- LeetCode-字符串-反转字符串中的单词 II
557. 反转字符串中的单词 III class Solution {public:string reverseWords(string s) {s+=' '; //为了让最后一个单词进入循环stri ...
最新文章
- ReactiveCocoa初步
- php数组取字段值,php如何获取二维数组指定的某个字段的值
- Java NIO学习笔记之图解ByteBuffer
- 关键字驱动小例子_example2
- Python+matplotlib绘制散点图模拟心型图案
- vue.js多页面开发 webpack.config.js 配置方式
- python爬虫微信公众号文章_Python爬虫案例:爬取微信公众号文章
- 基于C语言的内存池的设计与实现
- WebStorm+Chrome插件JetBrains IDE Support进行实时调试
- 【题解】Luogu-P4774 [NOI2018] 屠龙勇士
- 什么是单工,半双工,全双工
- 一文搞懂Spark的Task调度器(TaskScheduler)
- Linux 文件的加密解密
- php 8bit 10bit 解码,求助:我想把10bit的MKV压制成8bitMP4
- 山东大学软件工程应用与实践——WeaselTSF(一)
- 变分推断(Variational Inference)解析
- 统计出库数,sql查询数据,sqldf做透视表,循坏处理数据
- c++实现经典游戏贪吃蛇(超详解)
- gmt绘制中国省界,结合awk和RGB列表绘制中国地震台站分布
- 11-IO(核心类库)