【说明】you're,I'm ,类似这种的单词是一个单词。
主要思路就是,从头到尾遍历字符串,不同的状态直接的切换可以确定是否为单词的个数加1.
当状态从在单词里转换为不在单词里时,单词的个数加1.
#define BEGIN 0
#define INWORD 1
#define OUTWORD 2
#define END 3
int GetWordNums(const char *str)
{
int Number = 0;
if (NULL == str)return Number;
int tag = BEGIN;
for (int i = 0; tag != END; i++)
{
switch (tag)
{
case BEGIN:
if (isalpha(str[i]))
tag = INWORD;
else
tag = OUTWORD;
break;
case OUTWORD:
if (isalpha(str[i]))
tag = INWORD;
break;
case INWORD:
if (!isalpha(str[i]) && str[i] != '\'' && str[i] != '-')
{
Number++;
tag = OUTWORD;
}
break;
}
if (str[i] == '\0')
{
tag = END;
}
}
return Number;
}