#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/*定义结构体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<wac.strC;i++)
{
printf("输入的第%d个单词是:%s\n",i+1,wac.str1[i]);
}
}
}