写atoi

这个被问烂了的面试题,我也写写。

其实要点就是,你要注意各种边界条件。比如输入的是非法的,输入的带有+-号,输入的是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;
                        }
                }
}

猜你喜欢

转载自blog.csdn.net/u012606764/article/details/39349325
今日推荐