#include <stdio.h> #include <stdlib.h> #include <string.h> int myatoi( const char *str ) { if (str == 0 ) return 0; char c; int nRet = -1; for (;;) { c = *(str++); if ( c >= '0' && c <= '9') { if (nRet==0 || nRet==-1) {nRet = c - '0';}// 正数第一个数字 else if (nRet==-2) {nRet = -( c - '0');}// 负数第一个数字 else nRet = nRet * 10 + ( c - '0');// 其他数字 continue; } if ( ( (c > 0x08 && c < 0x0E) || c == 0x20) && (nRet==-1)) continue;// 剪掉空白字符 if ( c == '+' && (nRet==-1) ) { nRet = 0; continue; }// 正数符号 if ( c == '-' && (nRet==-1) ) { nRet = -2; continue; }// 负数符号 if ( (nRet == -1) || (nRet == -2) ) nRet = 0;// 失败返回0值 break; } return nRet; }
int main(int argc, char *argv[]) { char *p = "123456"; int i; i = myatoi(p); printf("*%d*\n",i); return 0; }
|
请发表评论