每日一练:将字符串转成整数

本文介绍了一种将字符串转换为整数的方法,并考虑了符号位和空格等特殊情况。使用C语言实现,通过ASCII码转换字符为数字,同时检查边界条件确保结果在整数范围内。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解题思路:

  将字符串str中的每个字符通过ascll码转换成对应的数字,定义一个计数器num,每转换一次num*10,再加上当前字符转成的数字。

字符串在转整数的时候要注意特殊情况:当第一个字符为+/-/字母/空格时。

#include<stdio.h>
#include<windows.h>
#include<assert.h>
enum en
{
	EROR,      //0
	OK    //1
};
enum en st = EROR;
int paraInt(char *dest)
{
	assert(dest);
	long long sum = 0;          //用sum来保存得到的整数
	int flag = 1;
	if (*dest == '+')           //第一个字符为+的情况
		dest ++;
	if (*dest == '-')            //第一个字符为-的情况
	{
		flag = -flag;
		dest++;
	}
	if (isspace(*dest))          //第一个字符是空格的情况
	{
		dest++;
	}
	while (isdigit(*dest)){                //判断字符串中是否有数字,有时为ture
		if (*dest >= '0'&&*dest <= '9')
			sum = sum * 10 +flag*(*dest- '0');
		if (sum<INT_MAX&&sum>INT_MIN)      //INT_MAX整数int型最大值,INT_MINint型最小值
			sum = (int)sum;
		st = OK;
		dest++;
	}
	return sum;
}
int main(){
	char str[] = " 1236666644";
	int ret = paraInt(str);
	if (st)                           //当st为OK的时候输出
	{
		printf("%d\n", ret);
	}
	system("pause");
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值