21
2020
02

编码实现字符串转化为数字

编码实现字符串转化为数字

编码实现函数 atoi(),设计一个程序,把一个字符串转化为一个整型数值。例如数字:“5486321”,转化成字符:5486321。

【答案】


int myAtoi(const char * str)

{

int num = 0; //保存转换后的数值

int isNegative = 0; //记录字符串中是否有负号

int n =0;

char *p = str;

if(p == NULL) //判断指针的合法性

{

return -1;

}

while(*p++ != '\0') //计算数字符串度

{

n++;

}

p = str;

if(p[0] == '-') //判断数组是否有负号

{

isNegative = 1;

}

char temp = '0';

for(int i = 0 ; i < n; i++)

{

char temp = *p++;

if(temp > '9' ||temp < '0') //滤除非数字字符

{

continue;

}

if(num !=0 || temp != '0') //滤除字符串开始的 0 字符

{

 temp -= 0x30; //将数字字符转换为数值

 num += temp *int( pow(10 , n - 1 -i) );

}

}

if(isNegative) //如果字符串中有负号,将数值取反

{

return (0 - num);

}

else

{

return num; //返回转换后的数值

}

}


注意:此段代码只是实现了十进制字符串到数字的转化,读者可以自己去实现 2 进制,8 进制,10 进制,16 进制的转化。

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。