在字符串中找出连续最长的数字串,并把这个串的长度返回
#include <stdlib.h>
#include "oj.h"
#include <iostream>
#include <stdio.h>
#include <string.h>
/* 功能:在字符串中找出连续最长的数字串,并把这个串的长度返回
函数原型:
unsigned int Continumax(char** pOutputstr, char* intputstr)
输入参数:
char* intputstr 输入字符串
输出参数:
char** pOutputstr: 连续最长的数字串,如果连续最长的数字串的长度为0,应该返回空字符串
pOutputstr 指向的内存应该在函数内用malloc函数申请,由调用处负责释放
返回值:
连续最长的数字串的长度
*/
unsigned int Continumax(char** pOutputstr, char* intputstr)
{
char *pOut = NULL;
unsigned int maxLenth = 0,len = 0;
char maxStr[1024];
if((pOut=(char *)malloc(1024)) == NULL)
return 0;
memset(pOut,'\0',1024);
//pOutputstr不能为NULL,否则对其*解引用异常,用&pOutputstr作为参数传入
*pOutputstr = pOut;
if(intputstr == NULL)
{
pOut = " ";
return 0;
}
while(*intputstr != '\0')
{
if(*intputstr>='0' && *intputstr<='9')
{
maxStr[len++]=*intputstr;
}
else
{
if(len >= maxLenth)
{
maxLenth = len;
maxStr[len]='\0';
strncpy(pOut,maxStr,len);
}
len = 0;
}
++intputstr;
}
if(len >= maxLenth)//最后一位是数字
{
maxLenth = len;
maxStr[len]='\0';
strncpy(pOut,maxStr,len);
}
return maxLenth;
}