利用函数指针统计字符串中各种类型字符的个数

/*
功能:对输入的字符串,分别统计字符串内英文字母、空格、数字和其他字符的个数
   
输入:char* pInputString:字符串
   
输出:int * pCharNum:英文字母个数
     int * pBlankNum:空格个数
     int * pDigitNum:数字个数
     int * pOtherNum:其它字符个数
    
返回:void
*/
#include
#include
#include


bool isChar(char* p)
{
 char ch=*p;
 return (isalpha(ch)!=0);
}
bool isDigit(char* p)
{
    char ch=*p;
 return (isdigit(ch)!=0);
}
bool isBlank(char* p)
{
 char ch=*p;
 return ch==' ';
}

bool isOther(char* p)
{
return true;
}
bool (*func[4])(char* pInputString)={isChar,isBlank,isDigit,isOther};

void StatString(char* pInputString, int* pCharNum, int* pBlankNum, int* pDigitNum, int* pOtherNum)
{
 /*在这里实现功能*/
    if(pInputString==NULL||pCharNum==NULL||pBlankNum==NULL||pDigitNum==NULL||pOtherNum==NULL) return;
 
 int* a[]={pCharNum,pBlankNum,pDigitNum,pOtherNum};
 int b[4]={0};
 char* pc=pInputString;
 while(*pc!='\0')
 {
  for(int i=0;i<4;i++)
  {
  
   if(func[i](pc))
   {
    *(a[i])++;
    b[i]++;
    break;
   }
  }
  pc++;
 }
 /*for(int i=0;i<4;i++)
  *(a[i])=b[i];*/

 *pCharNum=b[0];
 *pBlankNum=b[1];
 *pDigitNum=b[2];
 *pOtherNum=b[3];
 
 return;

你可能感兴趣的:(语言使用cpp/c/java)