这个被问烂了的面试题,我也写写。
其实要点就是,你要注意各种边界条件。比如输入的是非法的,输入的带有+-号,输入的是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; } } }