C语言:my_atoi函数

my_atoi函数:将字符串转换成整型(八进制、十进制以及十六进制数字)

int my_atoi(const char* str)//字符串转成整型
{
	assert(str != NULL);
	int sum = 0;
	if (str == NULL || *str == '\0') return sum;
	int tag = 0;//0 正数 1 负数
	while (isspace(*str))//消除空格
	{
		str++;
	}
	if (*str == '-')
	{
		tag = 1;
		str++;
	}
	else if (*str == '+')//判断正负
	{
		tag = 0;
		str++;
	}
	if (*str == '0')// 0 0x 0X 八进制或者十六进制
	{
		if (*(str + 1) == 'x' || *(str + 1) == 'X')// 16进制
		{
			sum = my_hex(str + 2);// 跳过0x或者0X
		}
		else// 8进制
		{
			sum = my_oct(str + 1);// 跳过0
		}
	}
	else// 10进制
	{
		sum = my_dec(str);
	}
	if (tag )
	{
		sum = -sum;
	}
	return sum;
}
int main()
{
	const char* str[] = {
		"2345",      // 2345
		"0234",      // 156
		"0xff",      // 255
		" 342.345",  // 342
		"  +12adg",  // 12
		"  -0234",   // -156
		" -0x12abc", //
	};
	int n = sizeof(str) / sizeof(str[0]);
	for (int i = 0; i < n; i++)
	{
		printf("%s => %d \n", str[i], my_atoi(str[i]));
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值