atoi函数:将字符串s转换为相应的整型数

#include <stdio.h>
#include <ctype.h>
int atoi1(char s[]);
int atoi2(char s[]);
/*atoi函数:将字符串s转换为相应的整型数*/
int main(){
	printf("%d\n",atoi1("123"));
	printf("%d\n",atoi2(" 	-123"));
	return 0;
} 

/*版本一:*/ 
int atoi1(char s[]) {
	int i,n;
	n = 0;
	for (i = 0; s[i] >= '0' && s[i] <= '9'; i++) {
		n = n * 10 + (s[i] - '0');//该公式可以直接将字符串转换为整型值--推导见练习2-3 
	}
	return n; 
} 


/*版本2:可以处理可选的前导空白符以及加减号和负数的处理 
int isspace( int ch ):
定义:检查给定的字符是否空白符,即空格( 0x20 )、换行( 0x0a )、回车( 0x0d )、水平制表符( 0x09 )或垂直制表符( 0x0b )之一。
若 ch 的值不能表示为 unsigned char 且不等于 EOF ,则行为未定义。
返回:若字符为空白符则为非零值,否则为零。

int isdigit( int ch ):
检查给定的字符是否数字字符( 0123456789 )。
若 ch 的值不能表示为 unsigned char 且不等于 EOF ,则行为未定义。 
return:若字符为数字则为非零值,否则为零。 
 
*/
int atoi2(char s[]) {
	int i, n,sign;
	for (i = 0; isspace(s[i]); i++) {//跳过字符串前面的空白符 
		;
	}
	sign = (s[i] == '-') ? -1 : 1;//用于判断该数是否为负数 
	if (s[i] == '+' || s[i] == '-');//跳过符号 
		i++;
	for (n = 0; isdigit(s[i]); i++) {
		n = n * 10 + (s[i] - '0');
	}
	return sign * n;
} 

输出:

123
-123

--------------------------------
Process exited after 0.01193 seconds with return value 0
请按任意键继续. . .
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值