将字符里的数字转换成int 遇见0或者字符就结束,look atoi的实现
#include <Windows.h>
int xzm_atoi( char* pstr )
{
int ret = 0;
int symbolSign = 1;
/*
* 判断指针是否为空
*/
if(pstr == NULL)
{
OutputDebugString("Pointer is NULL\n");
return 0;
}
/*
* 跳过前面的空格字符 isspace返回值是如果无空格则返回NULL
*/
while(isspace(*pstr))
{
pstr++;
}
/*
* 判断正负号
* 如果是正号,指针指向下一个字符
* 如果是符号,把符号标记为symbolSign置-1,然后再把指针指向下一个字符
*/
if(*pstr == '-')
{
symbolSign = -1;
}
if(*pstr == '-' || *pstr == '+')
{
pstr++;
}
/*
* 把数字字符串逐个转换成整数,并把最后转换好的整数赋给ret
*/
while(*pstr >= '0' && *pstr <= '9')
{
ret = ret * 10 + *pstr - '0';
pstr++;
}
ret = symbolSign * ret;
return ret;
}
测试如下,
#include <Windows.h>
void main()
{
char strarrayA[] = "-100";
char strarrayB[] = "0200202002xzm100";
int c = 0;
c = xzm_atoi(strarrayA) + xzm_atoi(strarrayB);
}