C语言 将8,10,16进制数字串转换成十进制整数的函数

发布网友 发布时间:2024-10-10 22:06

我来回答

1个回答

热心网友 时间:2024-10-12 10:51

//你的条件判断出问题了,略作修改如下:

#include<stdio.h>
long str2int(char *s)
{
long n;int i; int is8=0; //88进制标记
if(s[0]=='0'&&s[1]>='1'&&s[1]<='8')
{
is8=1; //8进制
for(n=0,i=1;s[i];i++)
n=n*8+s[i]-'0';
}
if(s[0]=='0'&&s[1]=='x'||s[1]=='X')
for(i=2,n=0;s[i];i++)
{if(s[i]>='0'&&s[i]<='9')
n=n*16+s[i]-'0';
if(s[i]>='a'&&s[i]<='g')
n=n*16+s[i]-'a'+10;
if(s[i]>='A'&&s[i]<='G')
n=n*16+s[i]-'A'+10;}
else
if(!is8) //确认不是8进制
{
for(n=0,i=0;s[i];i++)
n=n*10+s[i]-'0';
}
return n;
}
void main()
{char s[20];
gets(s);
printf("%ld",str2int(s));
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com