/*在字符串中找出连续最长的数字串,并把这个串的长度返回*/
unsigned int Continumax(char** pOutputstr, char* inputstr)
{
if(inputstr==NULL)
{ **pOutputstr="\0";
return 0;
}
int i=0,j=0;
int len=0;//每个数字串的长度
char *p=NULL;
char *temp=NULL;
temp=(char*)malloc(sizeof(char)*30);
while(inputstr[i]!="\0")
{
if(inputstr[i]>="0"&&inputstr[i]<="9")
{
p=inputstr+i;
for(j=i;;j++)
if(inputstr[j]<"0"||inputstr[j]>"9")
{
p[j-i]="\0";
if(len<=j-i)
{
len=j-i;
strcpy(temp,p);
}
break;
if(inputstr[j]=="\0")
{
*pOutputstr=temp;
return len;
}
}
i=j;
}
i++;
}
if(len==0)
{
*pOutputstr=(char*)malloc(sizeof(char)*30);
**pOutputstr="\0";
return 0;
}
*pOutputstr=(char*)malloc(sizeof(char)*30);
*pOutputstr=temp;
//free(temp);
return len;
}
int main()
{
char input[100];
cin.getline(input,100);
char *out=NULL;
int n;
n=Continumax(&out,input);
cout<<n<<" ";
cout<<out<<" ";
free(out);
}
oJ中,有内存泄露错误,但是在调用函数里释放掉temp,结果肯定出错。问一下在现有结构中该怎么样更改呢?
解决方案
35
shared_ptr
unique_ptr
unique_ptr
5
