/*****************************************************/ /*找出一个字符串中出现的最长连续数字,并返回数字长度*/ /* 目的:编程学习 */ /****************************************************/ #include<stdio.h> int GetSubString(const char *strSource, char *strResult) { int iTmp=0, iHead=0, iMax=0; for(int Index=0, iLen=0; strSource[Index]; Index++) { if(strSource[Index] >= '0' && strSource[Index] <= '9' && strSource[Index-1] > '0' && strSource[Index] == strSource[Index-1]+1) { iLen++; // 连续数字的长度增1 } else // 出现字符或不连续数字 { if(strSource[Index] >= '0' && strSource[Index] <= '9') // 该字符是数字,但数字不连续 { iTmp = Index; iLen = 1; } if(iLen > iMax) { iMax = iLen; iHead = iTmp; } } } for(iTmp=0 ; iTmp < iMax; iTmp++) // 将原字符串中最长的连续数字串赋值给结果串 { strResult[iTmp] = strSource[iHead++]; } strResult[iTmp]='/0'; return iMax; // 返回连续数字的最大长度 } int main(int argc, char* argv[]) { char strSource[]="ads3sl456789DF3456ld345AA", char strResult[sizeof(strSource)]; printf("Len=%d, strResult=%s /nstrSource=%s/n", GetSubString(strSource, strResult), strResult, strSource); }