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. 字符串中统计单词个数

    用到的几个小知识 : 1.字符串流是以空格作为一个字符串的结束标志,采用stringstream来提取单词. 2.为了消除重复单词,需要先将vector排序,使得重复的单词相邻出现,不先排序无法正确& ...

  2. 习题:统计字符串中的单词个数

    1 /*统计字符串中的单词个数*/ 2 #include<stdio.h> 3 int main(void) 4 { 5 char a[80]={""},c; 6 in ...

  3. c语言求出字符串最长单词,C语言 在字符串中找到最长单词

    满意答案 路飞的潮人店 2014.05.10 采纳率:59%    等级:9 已帮助:464人 我新写了一个,你看下吧, 主要用到了strtok()这个函数, 这个函数在做字符串切割时很有用的... ...

  4. 使用C语言分析分析英文字符串中的单词

    @[TOC] 使用C语言分析分析英文字符串中的单词 分析英文字符串时会产生的问题 比如一句英文: we eat dinner at four o'clock,noodles is delicious. ...

  5. 统计字符串中每个单词出现的次数

    字符串"wo ai java abc java abc wo",统计字符串中每个单词出现的次数 package work;import java.awt.RenderingHint ...

  6. 如何遍历字符串中的单词?

    我正在尝试遍历字符串中的单词. 可以假定字符串由空格分隔的单词组成. 请注意,我对C字符串函数或那种字符操作/访问不感兴趣. 另外,在回答问题时,请优先考虑优雅而不是效率. 我目前拥有的最佳解决方案是 ...

  7. 删除字符串中各单词间多余空格

    删除字符串中各单词间多余空格 编程实现删除字符串中各单词间多余空格,只保留一个空格.如果字首字符中有连续空格,应完全删除:如果非字母字符前后有空格应该将空格完全删除:如果末尾是一连续空格也应将其删除. ...

  8. 如何大写字符串中每个单词的第一个字符

    Java中是否内置了一个函数,该函数可以大写字符串中每个单词的第一个字符,而不会影响其他单词? 例子: jon skeet - > Jon Skeet miles o'Brien > Mi ...

  9. LeetCode-字符串-反转字符串中的单词 II

    557. 反转字符串中的单词 III class Solution {public:string reverseWords(string s) {s+=' '; //为了让最后一个单词进入循环stri ...

最新文章

  1. ReactiveCocoa初步
  2. php数组取字段值,php如何获取二维数组指定的某个字段的值
  3. Java NIO学习笔记之图解ByteBuffer
  4. 关键字驱动小例子_example2
  5. Python+matplotlib绘制散点图模拟心型图案
  6. vue.js多页面开发 webpack.config.js 配置方式
  7. python爬虫微信公众号文章_Python爬虫案例:爬取微信公众号文章
  8. 基于C语言的内存池的设计与实现
  9. WebStorm+Chrome插件JetBrains IDE Support进行实时调试
  10. 【题解】Luogu-P4774 [NOI2018] 屠龙勇士
  11. 什么是单工,半双工,全双工
  12. 一文搞懂Spark的Task调度器(TaskScheduler)
  13. Linux 文件的加密解密
  14. php 8bit 10bit 解码,求助:我想把10bit的MKV压制成8bitMP4
  15. 山东大学软件工程应用与实践——WeaselTSF(一)
  16. 变分推断(Variational Inference)解析
  17. 统计出库数,sql查询数据,sqldf做透视表,循坏处理数据
  18. c++实现经典游戏贪吃蛇(超详解)
  19. gmt绘制中国省界,结合awk和RGB列表绘制中国地震台站分布
  20. 11-IO(核心类库)

热门文章

  1. linux bt测试命令,Android命令行测试BT,WIFI,Sensor工作状态
  2. C语言刷题系列——5.使用函数判断完全平方数
  3. 外国官方网站下载文件速度缓慢
  4. int型的取值范围是?
  5. Android Intent Service Usage
  6. OFDM学习笔记(一)(OFDM技术简介)
  7. 第三篇 IT 技术支持工程师职业发展路径与技能要求
  8. 图片加密(一)颜色加密
  9. 控制器(Controller)规范
  10. 修改linux中@后的名字