C语言写number()函数,在一个有字母数字组成的字符串中提取出数字并将其转换成整数。例“1c3b"转成整数13

我这个函数有无问题?如果不用到pow10(n)该怎么编写?C语言简单编写,高级的或其他语言的我看不懂,
long long number(char s[])
{
char str[15],a[15];
int i,k,a;
{k=0;
for(i=0;str[i]!='\0';i++)
if(str[i]<=9&&str[i]>=0)
a[k]=str[i];
k=k+1;}
for(i=0,a=0;i<k-1;i++)
a=a+(int)a[(k-1)-(i+1)]*pow10(i);
return a;
}

long number(char s[])
{
char str[15], a[15];
int i, k=0;
long a;// a 一定要定义为long int ,因为整个函数的返回值是long型。

for(i=0; str[i]!='\0'; i++)
{
if((str[i]<='9')&&(str[i]>='0'))
a[k++] = str[i];
}
for(i=0,a=0; i<k-1; i++)
a = a*10 + (a[i] - '0');//这里故意打括号,为了好理解。
//或者上一个for LOOP用 sscanf函数。如下:
sscanf(a, "%l", a);
return a;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-09
long long number(char s[])
{
char str[15],a[15];
int i,k,a;
{k=0;
for(i=0;str[i]!='\0';i++)
if(str[i]<='9'&&str[i]>='0')
a[k++]=str[i];
}
for(i=0,a=0;i<k-1;i++)
a=a+(int)a[(k-1)-(i+1)]*pow10(i);
return a;
}
pow10(i) 就是权值本回答被网友采纳
第2个回答  2012-07-09
long long number(char s[])
{
int index;
long result=0;

for(index = 0; *(s+i)!='\0' ; i++)

{
if(*(s+i)>='0'&&*(s+i)<='9')

{
result=result*10+(*(s+i));

}

}

return result;

}
相似回答