#include "stdafx.h"
int GetSubString(char *strSource, char *strResult)
{
int iTmp=0, iHead=0, iMax=0;
for(int Index=0, iLen=0; strSource[Index] != '/0'; Index++)
{
// 该字符是数字,前一个字符也是数字,并且:该数字 = 前一个数字 + 1
if(strSource[Index] >= '0' && strSource[Index] <= '9' && strSource[Index-1] >= '0'
&& strSource[Index] == strSource[Index-1]+1)
iLen++; // 连续数字的长度增1
else // 出现字符或不连续数字
{
// 检查当前得到的连续数字长度是否大于以往得到的最大长度
if(iLen > iMax)
{
iMax = iLen; // 保存最大长度值
iHead = iTmp; // 保存最大连续串的起始位置
}
// 该字符是数字,但数字不连续
if(strSource[Index] >= '0' && strSource[Index] <= '9')
{
iTmp = Index; // 重新设定连续数字的起始位置
iLen = 1; // 初始新的连续数字长度为1
}
}
}
// 将原始字符串中最长的连续数字串赋值给结果串
for(iTmp=0 ; iTmp < iMax; iTmp++)
strResult[iTmp] = strSource[iHead++];
strResult[iTmp]='/0';
// 返回连续数字的最大长度
return iMax;
}
int main(int argc, char* argv[])
{
char strSource[]="ads34EFsdsl456789DDasFdiel3456ld345678AAA", strResult[sizeof(strSource)];
printf("Len=%d, strResult=%s /nstrSource=%s/n", GetSubString(strSource, strResult), strResult, strSource);
return getchar();
}