在字符串中找出连续最长的数字串

写一个函数,它的原形是int continuemax(char*outputstr,char*inputstr)功能:在字符串中找出连续最长的数字串并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。例如:“abcd12345e123456789d125ss”的首地址传给intputstr后,函数将返回9,outputstr所指的值为123456789.
#include <iostream> 
using namespace std;
  
int continuemax(char* outputstr,char* inputstr)
{
	int max=0; //字符串中连续最长的数字串长度
	int cnt; //记录连续数字字符的个数 
	char* tmp0=NULL;
	char* tmp1=NULL;
	int i;
	for(;;)
	{
		while(*inputstr != 0 && (*inputstr > '9' || *inputstr < '0'))//跳过非数字字符 
			++inputstr;	 
		cnt = 0; //必须清零 
		tmp0=inputstr;
		while(*inputstr != 0 && (*inputstr >= '0' && *inputstr <= '9'))//检测数字字符
		{
			++cnt;
			++inputstr;	
		} 
		if(cnt > max)
		{
			max=cnt; 
			tmp1=tmp0;  //tmp1指向连续数字字符最长的首地址 
		}
		if(*inputstr == 0) //字符串结束后跳出循环
			break;	
	}
	for(i=0;i<max;++i) //将连续最长的数字串复制到outputstr中
		*(outputstr+i)=*(tmp1+i);
	*(outputstr+i)='\0';	//字符串结束字符 
	return max;	
} 
int main()  
{  
	char* inputstr="abcd12345ed125ss123456789"; 
	char outputstr[100];
	int max; 
	max=continuemax(outputstr,inputstr); 
	cout<<max<<"    "<<outputstr<<endl;  
	system("pause"); 
	return 0;   
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值