#include #include #include /*定义结构体word内存放单词和个数*/typedef struct{ char *str1[20]; int strC; }WordAndCnt;//定义total函数计算总的单词个数void total(char* str,WordAndCnt* wac){ //int sum=0,i; int i,j; wac->strC=0; for(i=0,j=0;str[i]!='#' && str[i]/*避免忘记输#的尴尬*/;i++) //你程序的输入是以字符'#'结尾的吧?不管了,你写的是这样,我就默认'#'结尾 { if((str[i]>='a' && str[i]<='z') || (str[i]>='A' && str[i]<='Z'))//确定起始字符的位置 { if(i==0 || !((str[i-1]>='a' && str[i-1]<='z') || (str[i-1]>='A' && str[i-1]<='Z'))) { j=i; } //j++; } if(i>0 && !((str[i]>='a' && str[i]<='z') || (str[i]>='A' && str[i]<='Z')) && ((str[i-1]>='a' && str[i-1]<='z') || (str[i-1]>='A' && str[i-1]<='Z')))//结束字母的位置 { wac->str1[wac->strC]=(char*)calloc(i-j+1,sizeof(char));//分配空间 并初始化 strncpy(wac->str1[wac->strC],str+j,i-j); wac->strC++; } } if(i!=j)//把最后一个字符串也拷贝到str1里 { wac->str1[wac->strC]=(char*)calloc(i-j+1,sizeof(char));//分配空间 并初始化 strncpy(wac->str1[wac->strC],str+j,i-j); wac->strC++; } printf("total=%d\n",wac->strC); //return(sum);}void main(){ char str[1000]; WordAndCnt wac; memset(str,0,1000); printf("输入一串英文:\n"); gets(str); total(str,&wac); printf("\n\n"); if(wac.strC>0) { for(int i=0;i