这个被问烂了的面试题,我也写写。
其实要点就是,你要注意各种边界条件。比如输入的是非法的,输入的带有+-号,输入的是0。你如何区分。 其他的倒没有特别注意的。
/*
ascii to int.
编写这个函数实现这个功能。
*/
#include<stdio.h>
int trans(char *);
int pos = 0;
int main(){
char *s = "-10000023";
int num;
num = trans(s);
printf("%d \n" , num);
printf("%d: 0 stand for pos . -1 stand for neg\n ", pos);
return 0;
}
int trans(char * string){
int num = 0;
if (string == NULL) //非法输入
return -1;
else {
if (*string == ' ' ) //输入的字符串为空
return 0;
else{
//最前面的输输入为正负号
if(*string == '-'){
pos = 1;
string ++;
}
else if(*string == '+') {
pos = 0;
string ++;
}
while(*string != '\0' && (*string <= '9' && *string >= '0') ){
num = num *10 + *string - '0';
string ++;
}
return num;
}
}
}