题目:写一个函数,它的原形是
int continumax(char *outputstr,char *intputstr);
功能:在字符串中找出连续最长的字符串,并把这个串的长度返回,并把这个最长数字串付给其中的一个函数参数outputstr所指内存。例如"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789;
#include<stdio.h>
#include<stdlib.h>
int continumax(char *outputstr,char *intputstr)
{
char *start1 = intputstr; //start1记录最长数字串的首地址
char *start2 = NULL; //start2是个中间变量,记录当前数字串的首地址
char *p = intputstr;
int maxnum = 0; //记录最长数字串的字符数
int num; //中间变量,记录当前数字串的长度
int i;
while(*p != '\0')
{
num = 0;
if( (*p >= '0') && (*p <= '9') )
{
start2 = p; //记录当前数字串的起点
num++;
p++;
while( (*p != '\0') && (*p >= '0') && (*p <= '9') )
{
num++;
p++;
}
if(num > maxnum)
{
maxnum = num;
start1 = start2; //把当前数字串的首地址赋给start1
}
}
else
{
p++;
}
}
for( i = 0;i < maxnum;i++) //将最长数字串值赋给outputstr
{
*(outputstr + i) = *(start1 + i);
}
*(outputstr + i) = '\0'; //注意:字符串结尾为'\0'
return maxnum;
}
int main()
{
char *outputstr = (char *)malloc(100 * sizeof(char));
// char outputstr[100];
char *intputstr = "abcd12345ed125ss123456789";
int num;
num = continumax(outputstr,intputstr);
printf("maxnum = %d\n",num);
printf("maxstr = %s\n",outputstr);
return 0;
}