要学会使用宏定义,善于使用宏定义可以让我们的程序阅读起来更加方便,逻辑更加清晰更易于理解。
BEGIN 表示开始统计单词
IN_WORD表示当前循环变量下标所指位置处于某一个单词中
OUT_WORD表示,结束上一个单词的遍历,代表可以对计数加一
END循环结束,在本程序中未使用
#include <ctype.h>
#define BEGIN 1
#define IN_WORD 2
#define OUT_WORD 3
#define EDF 4
int main()
{
// 翻译:每一个新的日子都是一个机会,让你能变成更好的人。
char str[] = { "Each new day is...it's a chance to be somebody better." };
int i = 0;
int num = 0;
int tag = BEGIN;
for (i = 0; str[i] != ' '; ++i)
{
switch (tag)
{
case BEGIN:
if (isalpha(str[i]))
{
tag = IN_WORD;
}
else
{
tag = OUT_WORD;
}
break;
case IN_WORD:
if (!isalpha(str[i]))
{
tag = OUT_WORD;
num += 1;
}
break;
case OUT_WORD:
if (isalpha(str[i]))
{
tag = IN_WORD;
}
break;
}
}
if (tag == IN_WORD)
{
num += 1;
}
printf("word size: %d
", num);
return 0;
}
输出:word size: 12