关于单词统计
因为连续空格算做一个。常规的算法如下:
选择一个标志,记录当前的是否为空格的状态,在状态切换之间,进行单词统计
代码实现如下:
#include "stdafx.h"
//统计单词个数
unsigned CountNumber(char* szInput)
{
unsigned nRet = 0;
char* pszChValue = szInput;
int nIsSpaceFlag = 0;//所选择的状态标志来判断是否可以确定是下一个单词
while (*pszChValue != '\0')
{
char chValue = *pszChValue;
if (chValue == ' ')
{
if (nIsSpaceFlag != 1)
{
nRet++;
}
else
{
//meidongzuo
}
nIsSpaceFlag = 1;
}
else if (chValue != ' ')
{
nIsSpaceFlag = 0;
}
pszChValue++;
}
if (nIsSpaceFlag == 0)
{
nRet++;
}
return nRet;
}
int main(int argc, char* argv[])
{
unsigned nRet = CountNumber("hello from world cool");
printf("%d\r\n", nRet);
return 0;
}
词法分析器
所谓的词法分析器,就是找出一个“单词”的“词性”。
- 如果有一系列的字母和数字(全部都是单字符),找出其中的数字,以下是代码实现:
int main(int argc, char* argv[])
{
char* szInput = "a3skl4dfj5asl7dj6sa9dfasd";
char* pszChValue = szInput;
int i = 0;
while (*pszChValue != '\0')
{
if (*pszChValue < 'z' && *pszChValue > 'a')
{
printf("%c\t", *pszChValue);
i++;
if (i % 3 == 0)
{
printf("\r\n");
i = 0;
}
}
pszChValue++;
}
return 0;
}
- 把问题升级一下,如果是正常的一段文本,你如何找出其中的数字呢?如果会找数字了,如何找出变量名呢(含关键字)?
int nValue1 = 123;
int nValue2 = 456;
<