C语言算法训练
实现类似c语言提供的atoi函数功能算法
#include<stdio.h>
#include <stdlib.h>
#include <strings.h>
long my_atoi(char *p);
int main(int argc,const char **argv)
{
long data;
char buf[10];
while(1)
{
bzero(buf,10);
scanf("%s",&buf);
data = my_atio(buf);
printf("%ld\n",data);
}
}
/*
函数名:my_atoi(char *)
参数:字符数组char *p
功能:实现字符数字转长整形数
返回:相应整形数
*/
long my_atoi(char *p)
{
long num = 0;
unsigned int flag = 1;
while(*p) //'\0'对应数字是0
{
if(*p<'0' || *p>'9')
{
if(*p == '-') //考虑负数情况
{
flag = 0;
}
else
{
break;
}
}
if(flag)
{
num = num*10; //位数*10
num = num + *p - '0';
p++;
}
else
{
if(*(p+1) == '\0')//往后面检测到结束符就跳出防止出现错误数据
{
break;
}
num = num*10;//位数*10
num = num + p[1] -'0';
p++;
}
}
if(flag)
{
return num;
}
else
{
num = 0 - num;
return num;
}
}