int trans(char *s,int a[])
{
int i = 0;
int flag = 0;
int num = 0;
while(*s) // 依次搜索字符串
{
if(*s >= '0'&& *s <= '9') // 如果当前字符为数字
{
if(flag) // 如果该字符的前一个字符也为数字,则乘10后再加当前值
i = i*10;
i += (*s-48); // 将数字字符转换成数字,这个48不知道不同编译环境下是否不同,我用的是VS2008
flag = 1; // 标记当前字符为数字,给下一循环做判断
}
else // 如果当前字符不为数字
{
if(i) // 如果i中存在数字,将其赋给a数组中,num数++
{
if(num >= 20) // 判断是否越界
return num;
a[num++] = i;
}
i = 0; // 清空i中的值,和flag标记,表明当前字符为非数字
flag = 0;
}
s++; // 下一个字符
}
if(flag) // 搜索完毕后,如果最后一个数字还存在,将其存入数组中
{
if(num >= 20)
return num;
a[num++] = i;
}
return num;
}
c的不太清楚,c#的可以用正则表达式,c的不知道如何用正则