69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct word
{
char str[32];
} W;
typedef struct words {
char word[32];
int cnt;
}WORD;
int get_words(W *word_list, int max_num, char *sentence);
static W p[1001];
static int gword_num;
int main()
{
char str1[32];
int count = 0;
memset(p,'\0',sizeof(p));
while(strcmp((gets(str1)), "#") != 0)
{
count = get_words(p, 1001, str1);
/*
i=0;
count=0;
k=0;
while(str1[i]!='\0')
{
j=0;
while(str1[i] == ' ')
i++;
for( ; str1[i] != ' ' && str1[i] !='\0'; i++)
{
p[k].str[j++]=str1[i];
}
for(j=0; j<k; j++)
{
if(strcmp( p[k].str, p[j].str)==0)
{
count--;
break;
}
}
count++;
k++;
while(str1[i]==' ')
i++;
}
*/
printf("%d\n",count);
}
printf("%d\n",count);
return 0;
}
int get_words(W *word_list, int max_num, char *sentence)
{
int i = 0, j = 0, k;
int flag = 0;
char tmp[32];
while (sentence[i] == ' ')
i++;
for ( ; sentence[i] && sentence[i] != '\n'; i++) {
if (sentence[i] != ' ' && sentence[i] != ','
&& sentence[i] != '!' && sentence[i] != '.') {
tmp[j++] = sentence[i];
} else if (j >= 1) {
tmp[j] = 0;
for (k = 0; k < max_num && strlen(word_list[k].str) > 0; k++) {
if (strcmp(word_list[k].str, tmp) == 0) {
flag = 1;
break;
}
}
if (flag == 0) {
strcpy(word_list[k].str, tmp);
gword_num++;
}
j = 0;
flag = 0;
}
}
if (j >= 1) {
tmp[j] = 0;
}
for (k = 0; k < max_num && strlen(word_list[k].str) > 0; k++) {
if (strcmp(word_list[k].str, tmp) == 0) {
flag = 1;
break;
}
}
if (flag == 0) {
strcpy(word_list[k].str, tmp);
gword_num++;
}
return gword_num;
}
做了一个参考吧