#include
#include
int is_same(char*str,char*s)
{
char*p;
char str2[100];
int flag=0;
strcpy(str2,s);//将内容复制到另一个数组中
p=strtok(str2," ");//目的是为了避免strtok函数对原来字符串的破坏!
while(p!=NULL)
{
if(strcmp(p,str)==0)//比较是否相同!
{
flag=1;
break;
}
p=strtok(NULL," ");
}
if(flag==0)
return 0;
else
return 1;
}
int getcount(char*s)
{
int i=0,j=0,length=0;
char str[20],str1[100];//将前一个单词储存起来,以便与后面的单词比较看是否一样
int word_count=0;//统计单词个数
int k=0;//每个单词的字符数量!
while(s[i])
{
if(s[i]!=' ')
{
if(word_count==0)
word_count++;
j=i;
for(k=0;k
str1[k]=s[k];
str1[k]='\0';
while((s[j]!=' ')&&(s[j]!='\0'))
{
str[length]=s[j];
j++;
length++;
}
str[length]='\0';
if((word_count!=0)&&(!is_same(str,str1)))
{
word_count++;
}
i+=length;
}
else
i++;
length=0;
}
return (word_count-1);//减去第一次统计重复的
}
int main(void)
{
char str[100];
int count=0;
printf("input a string :");
gets(str);
count=getcount(str);
printf("不同单词的数量:%d\n",count);
return 0;
}