写一个函数 , 它的原形是 int continumax(char *outputstr,char *intputstr)
功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数 outputstr 所指内存。
功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数 outputstr 所指内存。
例如: "abcd12345ed125ss123456789" 的首地址传给 intputstr 后,函数将返回 9 ,outputstr 所指的值为 123456789
分析:直接给出参考代码,该题思路很简单。
#include<stdlib.h>#include<stdio.h>#include<string.h>
int continumax(char *outputstr,char *intputstr){if(NULL==intputstr)return 0;
int len=0,max=0,pos=-1;
for(int i=0;;i++){if(intputstr[i]>='0' && intputstr[i]<='9')
{len++;}else
{if(len>max)
{max=len;pos=i-1;}len=0;}if(i>=strlen(intputstr)) //注意,最长的数字串可能位于串尾
{if(len>max)
{max=len;pos=i-1;}break;
}}if(pos<0)
{outputstr[0]='\0';return 0;
}for(int j=max-1;j>=0;j--){outputstr[j]=intputstr[pos--];}outputstr[max]='\0';return max;
}int main()
{char* outputstr=(char*)malloc(sizeof(20));char*inputstr="abcd12345ed125ss123456789";continumax(outputstr,inputstr);printf("%s\n",outputstr);
getchar();return 0;
}