我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《喵喵在开发一个新式的社交网络,现在她想要写一个模块来处理文本并计算其中不同标签的数量。》, 一起来围观吧 https://blog.csdn.net/qq_57230742/article/details/122809821?utm_source=app&app_version=5.0.1&code=app_1562916241&uLinkId=usr1mkqgl919blen
4条回答 默认 最新
- qzjhjxj 2022-02-20 19:40关注
供参考:
#include <stdio.h> #include <ctype.h> #include <stdlib.h> #include <string.h> typedef struct node { char c[30]; int count; struct node *next; }node,*link; node *firstWord(node *head,char word[])//判断单词是不是第一次出现 { node *p=head; while(p->next != NULL) { if(strcmp(p->next->c, word) == 0) return p->next; p=p->next; } return NULL; } void print(node *p)//输出单词和次数 { node *q=p; int cnt_word=0; while(q->next){q = q->next;cnt_word++;} printf("%d\n",cnt_word); while(p->next != NULL) { printf("%s %d\n", p->next->c,p->next->count); q=p; p=p->next; free(q); } free(p); } int main() { char str[1024],word[30]={0}; node *head,*p,*q,*t; int i,j=0,tag=1,flg=1; head=(link)malloc(sizeof(node)); head->next=NULL; p=head; gets(str); while(flg) { switch(tag){ case 1: i=0; if(str[j] == '#') word[i++]=str[j++] ,tag = 2; else tag = 3; break; case 2: if(isalpha(str[j])) word[i++]=str[j++]; else if(str[j] == '#') i = 0, tag = 3; else tag = 3; break; case 3: if(str[j] == ' ' || str[j] == '\0') { if(i > 1){ word[i]='\0';//加入结束符 t=firstWord(head,word); if(t == NULL)//第一次出现的单词 { q=(link)malloc(sizeof(node)); q->next=NULL; q->count=1; strcpy(q->c,word); p->next=q; p=q; } else t->count++; } tag = 1; } if(str[j] == '\0') flg=0; j++; break; } } print(head); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 关于#vue.js#的问题:word excel和ppt预览问题语言-javascript)
- ¥15 Apache显示系统错误3该如何解决?
- ¥30 uniapp小程序苹果手机加载gif图片不显示动效?
- ¥20 js怎么实现跨域问题
- ¥15 C++dll二次开发,C#调用
- ¥15 请教,如何使用C#加载本地摄像头进行逐帧推流
- ¥15 Python easyocr无法顺利执行,如何解决?
- ¥15 为什么会突然npm err!啊
- ¥15 java服务连接es读取列表数据,服务连接本地es获取数据时的速度很快,但是换成远端的es就会非常慢,这是为什么呢
- ¥15 vxworks交叉编译gcc报错error: missing binary operator before token "("