编码实现字符串转整型的函数(实现函数atoi的功能),据说是神州数码笔试题。如将字符串 ”+123”-->123, ”-0123”-->-123, “123CS45”-->123, “123.45CS”-->123, “CS123.45”-->0
【正确答案】#include "stdafx.h"
int str2int(const char *str) // 字符串转整型函数
{
int i=0, sign=1, value = 0;
if(str==NULL) return NULL; // 空串直接返回 NULL
if(str[0]=='-' || str[0]=='+'){ // 判断是否存在符号位
i = 1;
sign = (str[0]=='-' ? -1 : 1);
}
for(; str[i]>='0' && str[i]<='9'; i++) // 如果是数字,则继续转换
value = value * 10 + (str[i] - '0');
return sign * value;
}
int main(int argc, char *argv[])
{
char *str = "-123.45CS67";
int val = str2int(str);
printf("str=%s/tval=%d/n", str, val);
return getchar();
}
【答案解析】