自定义函数实现atoi
atoi: 将字符串转换成数字
例子:
char ch1[]="123"; --->转换成整数123
char ch2[]="+123"; --->转换成整数123
char ch3[]="-123"; --->转换成整数-123
char ch4[]="a123"; --->转换成整数0
char ch5[]="+123"; --->转换成整数123
char ch6[]="123a456"; --->转换成整数123
char ch7[]="-123a5"; --->转换成整数-123
实现代码如下:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
//
//自定义函数实现atoi
//
int my_atoi(const char *cptr);
int main(int argc, const char *argv[])
{
char ch1[]="123";
char ch2[]="+123";
char ch3[]="-123";
char ch4[]="a123";
char ch5[]="+123";
char ch6[]="123a456";
char ch7[]="-123a5";
char *parr[] = {ch1, ch2, ch3, ch4, ch5, ch6, ch7}; //指针数组; 本质是数组,存放了字符串的地址
for(int i=0; i<7; i++)
{
int num = my_atoi(parr[i]);
printf("ch%d=%s, num%d=%d\n", i+1, parr[i], i+1, num);
parr[i];
}
return 0;
}
int my_atoi(const char *cptr)
{
int num = 0;
int nagtive = 0; //标记符号位是符号
int i=0; //用于标记第一位是符号位
for(; *cptr!='\0'; cptr++) // 循环到字符串结束
{
//printf("*cptr=%c\t", *cptr);
if(i==0) // 处理第一位是符号位的
{
i=1;
if(*cptr=='+') continue;
else if (*cptr=='-')
{
nagtive=1;
continue;}
}
if( *cptr>='0' && *cptr<='9')
{
num = num * 10 + *cptr - '0'; //将ascii码转换成整数
//printf("num=%d\t", num);
continue;
}else{
break;
};
}
if(nagtive>0){
num = -num;
}
return num;
}