int maxContinuNum(const char*inputstr.char*outputstr)功能:
在以‘\0’结尾的字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参
数outputstr所指内存。不能用strlen之类的库函数。
#include
#include
using namespace std;
bool isdigital(char p){
if(p>='0'&&p<='9')
return true;
return false;
}
int maxContinuNum(const char* inputstr,char* outputstr){
int len=0;//每次的连续数
int maxlen=0;//最大的连续数
char* start=NULL;//记录最大连续数指针开始的位置
if(*inputstr=='\0')
return 0;
while(*inputstr!='\0'){
while(*inputstr!=0&&isdigital(*inputstr)){
len++;
inputstr++;
}
if(len>maxlen){
maxlen=len;
start=(char*)(inputstr-maxlen);
}
len=0;
if(*inputstr!='\0')
inputstr++;
}
for(int i=0;i
*(outputstr++)=*(start++);
cout<
return maxlen;
}
int main(){
char *str="1234asdf234211jjl111122223312j";
char *str1=(char*)malloc(100*sizeof(char));
memset(str1,0,100);//如果没有这个操作,str1字符串就找不到正确的结束符,输出会出现乱码
int str_len;
str_len=maxContinuNum(str,str1);
cout<
<
system("pause");
return 1;
}
另一种好的解决方法:
#include
int Findmaxlen(char *input,char *output);
void main()
{
char input[]="abc123def123456ee123456789dd";
char output[50]={0};
int maxlen;
maxlen=Findmaxlen(input,output);
printf("the str %s\n",output);
printf("the maxlen is %d \n",maxlen);}
int Findmaxlen(char *input,char *output)
{char *in=input,*out=output,*temp,*final;
int count=0,maxlen=0,i;
while(*in!='\0')
{
if(*in>='0'&&*in<='9')
{
count=0;
for(temp=in;*in>='0'&&*in<='9';in++)
count++;
if(maxlen
{
maxlen=count;
final=temp;
}//if
}//if
in++;
}//while
for(i=0;i
*out++=*final++;
*out='\0';
return maxlen;
}
分享到:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SO1UWZ1kjZyAzYlVjMkNzMyYmNlNmN2YDOiBDM5UGOx8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2012-08-09 15:15
浏览 803
分类:非技术
评论