如ab123cd123456ef123456789,应返回9,并将123456789保存到输出字符串中。
#include <iostream>
using namespace std;
#define LEN 100
int maxNum(const char *inputstr, char *outputstr)
{
int p, pos, num, maxnum, is_num, i;
p = pos = num = maxnum = is_num = i = 0;
while (inputstr[p] != '\0')
{
if (is_num == 0 && inputstr[p] >= '0' && inputstr[p] <= '9') //数字开始
{
num = 1;
is_num = 1;
}
else if (is_num == 1 && inputstr[p] >= '0' && inputstr[p] <= '9') //中间数字
{
num++;
}
else if (is_num == 1 && (inputstr[p] < '0' || inputstr[p] > '9')) //数字结束
{
is_num = 0;
if (num > maxnum)
{
maxnum = num;
pos = p - num;
}
}
++p;
}
if (is_num == 1 && num > maxnum) //若是以数字为结尾的字符串
{
pos = p - num;
maxnum = num;
}
for (i = 0; i < maxnum; ++i)
{
outputstr[i] = inputstr[pos + i];
}
outputstr[num] = '\0';
return maxnum;
}
int main()
{
char in[LEN] = "ab123456cd1234ef123456789";
char out[LEN];
int len = maxNum(in, out);
cout << len << ":" << out << endl;
return 0;
}
#include <iostream>
using namespace std;
#define LEN 100
int maxNum(const char *inputstr, char *outputstr)
{
int p, pos, num, maxnum, is_num, i;
p = pos = num = maxnum = is_num = i = 0;
while (inputstr[p] != '\0')
{
if (is_num == 0 && inputstr[p] >= '0' && inputstr[p] <= '9') //数字开始
{
num = 1;
is_num = 1;
}
else if (is_num == 1 && inputstr[p] >= '0' && inputstr[p] <= '9') //中间数字
{
num++;
}
else if (is_num == 1 && (inputstr[p] < '0' || inputstr[p] > '9')) //数字结束
{
is_num = 0;
if (num > maxnum)
{
maxnum = num;
pos = p - num;
}
}
++p;
}
if (is_num == 1 && num > maxnum) //若是以数字为结尾的字符串
{
pos = p - num;
maxnum = num;
}
for (i = 0; i < maxnum; ++i)
{
outputstr[i] = inputstr[pos + i];
}
outputstr[num] = '\0';
return maxnum;
}
int main()
{
char in[LEN] = "ab123456cd1234ef123456789";
char out[LEN];
int len = maxNum(in, out);
cout << len << ":" << out << endl;
return 0;
}