面试中被问到了这个问题,当时答得不太好,没有考虑全面,回来总结一下,如有遗漏,欢迎指正。
知道C语言中有2个函数atoi()和 itoa(),但对具体实现不是很清楚,现在自己总结实现一下:
字符串转整型
这个情况稍微复杂一些,要考虑全面
- 字符串开始有空格,要先判断过滤‘ 123’
- 存在符号'+'和'-'要判断
- 存在小数点,也就是'123.45'转为整型是123
- 字符串超过整型int的范围,就转为int表示最边缘的数
- 存在不合法的字符串‘+-123’则转为-,‘123 456’’转为123,
整型转字符串
也要考虑全面,分析各种情况
首先要考虑正负号,然后倒序(a%10)的方式转成字符串,最后判断符号,倒序输出
/*
把字符串转换成整型数 atoi()
*/
int str2int(char s[]) {
int temp=0;
int flag=1;
int i=0;
while(i<sizeof(s)&&s[i]==' ')
i++;
if(s[i]=='+'||s[i]=='-')