关于二级指针的幅值有关问题,向大家请问一下这段程序应该如何改,多谢
关于二级指针的幅值问题,向大家请教一下这段程序应该怎么改,谢谢!
#include<stdio.h>
#include<assert.h>
#include<iostream>
#include <stdlib.h>
unsigned int Continumax(char** pOutputstr, char* intputstr)
{
int len = 0; //统计数字字符串的长度
int max = 0; //当前最大数字字符串的长度
char *pstr =NULL; //记录最大数字字符的起始位置
while(* intputstr!= '\0')
{
if(*intputstr <= '9' && *intputstr >='0') //统计数字子字符串的长度
{
len++;
intputstr++;
continue;
}
else if (len > max) //如果统计出来的数字字符串大于当前的最大数字子字符串的长度,则更新
{
max = len;
pstr = intputstr-len;
len = 0;
}
intputstr++;
len = 0;
}
if (len>max)
{
max = len;
pstr = intputstr-len;
len = 0;
}
for(int i = 0 ; i<max;i++) //将最大子字符串的值拷贝给outputstr
{
**pOutputstr = *pstr;
(*pOutputstr)++;
//pstr++;
}
pOutputstr = pOutputstr-max;
pOutputstr[max] ='\0';
// std::cout<<pOutputstr<<std::endl;
return max;
}
int main( )
{
char inputstr[ ]= "abc1321325";
char **out;
out = (char **)malloc(100);
if (out == NULL)
{
printf("Out of memory!\n");
exit(1);
}
int max_numstr_length = Continumax(out,inputstr);
printf("%s\n",out);
printf("the max_numstr_length is %d\n", max_numstr_length);
free(out);
return 0;
}
编译通过,但是运行不正确,我也知道问题主要从**pOutputstr = *pstr;这一句开始,我需要将字符串内的一段内容幅值给一个二级指针,请大家教我一下怎么修改,谢谢!!
------解决思路----------------------
这样做,外部释放内存
#include<stdio.h>
#include<assert.h>
#include<iostream>
#include <stdlib.h>
unsigned int Continumax(char** pOutputstr, char* intputstr)
{
int len = 0; //统计数字字符串的长度
int max = 0; //当前最大数字字符串的长度
char *pstr =NULL; //记录最大数字字符的起始位置
while(* intputstr!= '\0')
{
if(*intputstr <= '9' && *intputstr >='0') //统计数字子字符串的长度
{
len++;
intputstr++;
continue;
}
else if (len > max) //如果统计出来的数字字符串大于当前的最大数字子字符串的长度,则更新
{
max = len;
pstr = intputstr-len;
len = 0;
}
intputstr++;
len = 0;
}
if (len>max)
{
max = len;
pstr = intputstr-len;
len = 0;
}
for(int i = 0 ; i<max;i++) //将最大子字符串的值拷贝给outputstr
{
**pOutputstr = *pstr;
(*pOutputstr)++;
//pstr++;
}
pOutputstr = pOutputstr-max;
pOutputstr[max] ='\0';
// std::cout<<pOutputstr<<std::endl;
return max;
}
int main( )
{
char inputstr[ ]= "abc1321325";
char **out;
out = (char **)malloc(100);
if (out == NULL)
{
printf("Out of memory!\n");
exit(1);
}
int max_numstr_length = Continumax(out,inputstr);
printf("%s\n",out);
printf("the max_numstr_length is %d\n", max_numstr_length);
free(out);
return 0;
}
编译通过,但是运行不正确,我也知道问题主要从**pOutputstr = *pstr;这一句开始,我需要将字符串内的一段内容幅值给一个二级指针,请大家教我一下怎么修改,谢谢!!
------解决思路----------------------
char *out= NULL;
int max_numstr_length = Continumax(&out, inputstr);
unsigned int Continumax(char** pOutputstr, char* intputstr)
{
*pOutputstr = (char *)malloc(100);
}
这样做,外部释放内存