C语言判断一句话中不同单词的个数(包含动态数组)

来源:互联网 发布:深圳市软件协会地址 编辑:程序博客网 时间:2024/06/08 05:12
#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){char str[100];int num[100]={0};int i,flag=0,length=0;char **letter;char ch;letter=(char**)malloc(sizeof(char*));//为指针分配空间while(scanf("%s",str)){for(i=0;i<length;i++){if(strcmp(letter[i],str)==0)//判断letter中是否已经存在str中存储的单词{num[i]++;flag=1;}}if(!flag)//没有包含{length++;letter=(char**)realloc(letter,sizeof(char*)*length);//在原有的基础上重新申请内存if(length==1)//等于1说明是第一个单词,要用malloc而不是realloc.letter[i]=(char*)malloc(sizeof(char)*(strlen(str)+1));else//等于length-1说明是新的单词,还没有空间,所以要malloc,而不是reallocletter[length-1]=(char*)malloc(sizeof(char)*(strlen(str)+1));strcpy(letter[length-1],str);num[length-1]++;}flag=0;if((ch=getchar())=='\n')break;}for(i=0;i<length;i++){printf("%s%d ",letter[i],num[i]);}printf("\n");for(i=0;i<length;i++){free(letter[i]);letter[i]=NULL;}free(letter);letter=NULL;return 0;}

0 0
原创粉丝点击