#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,而不是realloc
letter[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;
}