#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include <ctype.h>
#define TEXTLEN 10000
#define BUFFERSIZE 100
#define MAXWORDS 500
#define WORDLEN 15
int main(void)
{
char text[TEXTLEN]={0};
char buffer[BUFFERSIZE]={0};
char jieshu[]="*\n";
const char kongge=' ';
const char danying='\'';
char words[MAXWORDS][WORDLEN+1];
int nword[MAXWORDS];
char word[WORDLEN+1];
int wordlen=0;
int wordcount=0;
int i;
int index;
bool isnew=true;
printf("这个程序能算出每个单词出现的次数");
printf("\n请输入文本:\n\n");
while(true)
{
if(!strcmp(fgets(buffer,BUFFERSIZE,stdin),jieshu))
break;
if(strlen(text)+strlen(buffer)+1>TEXTLEN)
{
printf("这已经是文本容量的最大值了。");
return 1;
}
strcat(text,buffer);
}
for(i=0;i<strlen(text);i++)
{
if(text[i]==danying||isalnum(text[i]))
continue;
text[i]=kongge;
}
index=0;
while(true)
{
while(text[index]==kongge)
index++;
if(text[index]='\0')
break;
wordlen=0;
while(text[index]==kongge||isalpha(text[index]))
{
if(wordlen==WORDLEN)
{
printf("这已经是单词长度的最大值了。");
return 1;
}
word[wordlen++]=tolower(text[index++]);
}
word[wordlen]='\0';
for(i=0;i<wordcount;i++)
在这里就开始摸不清头脑了
if(strcmp(word,words[i])==0)
wordcount代表什么?为什么要把它定义为0?
{
输出结果也不对,
++nword[i];
只用解析这下面的一段就行了,谢谢
isnew=false;
break;
}
isnew=true;
if(isnew)
{
if(wordcount>=MAXWORDS)
{
printf("\n对不起,单词个数已经超过了最大值。\n");
printf("(我们不能得到这个结果)\n");
return 1;
}
strcpy(words[wordcount],word);
nword[wordcount++]=1;
}
}
for(i=0;i<wordcount;i++)
{
if(!(i%3))
printf("\n");
printf(" %-15s%5d",words[i],nword[i]);
}
return 0;
}
输出不对,求解(我知道写的很乱,所以不用再强调了...)