atoi 原来将字符串02002xzm100转换为int以后是2002

来源:互联网 发布:网络时间校准 编辑:程序博客网 时间:2024/05/20 01:13


将字符里的数字转换成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);}



0 0