在C语言中的字符串都是以ASCII码的形式存放的。比如字符‘0’的ASCII码就是48。所以我们将字符转化为数字可以通过减字符‘0’实现,那么将字符串转化为数字呢,比如将字符串“123”转化为数字123,我们该如何实现呢?一般我们可以调用函数atoi()将字符串转化成int类型的整数,那么我们在笔试中是不允许这样做的,所以我们可以自己写一个my_atoi()函数。
#include<stdio.h>
int my_atoi(char *str)
{
int i = 0;
/** 定义标志位flag,设该字符串为正 */
int flag = 1;
int value = 0;
if('-' == str[0])
{
/** 字符串第一个字符为‘-’,则将flag置为-1 */
flag = -1;
i++;
}
else if('+' == str[0])
{
i++;
}
/** 碰到不是数字的字符则结束循环 */
while(str[i] >= '0' && str[i] <= '9')
{
value = value*10 + str[i] - '0';
i++;
}
return flag*value;
}
int main(void)
{
char str1[] = "+123"; //输出123
char str2[] = "-123"; //输出-123
char str3[] = "123"; //输出123
char str4[] = "123asd45"; //输出123
return 0;
}