首页 > 其他 > 详细

字符串转化成int

时间:2019-09-19 00:01:29      阅读:92      评论:0      收藏:0      [点我收藏+]

将str转化成int

#include<stdio.h>
#include<string>
int err = 0;
int str_to_int(char *s)
{
    long sum = 0;
    bool isPositive = true;
    bool isZeroStart = true;
    bool flag = false;
    char c;
    int maxInt = 0x7fffffff;
    bool flag2;
    bool isNumStart = false;

    while (*s != '\0') {
    c = *s;
    flag = (c >= '0' && c <= '9');

    if (c == '-') {
        if (isNumStart) {
        err = 9;
        printf("- is illegal");
        return -1;
        }
        isPositive = false;
        s++;
    } else if (c == '0' && isZeroStart) {
        isNumStart = true;
        s++;

    } else if (c == '+') {
        if (isNumStart) {
        err = 9;
        printf("+ is illegal");
        return -1;
        }

        if (*(s + 1) == '\0') {
        err = 10;
        printf("num is +\n");
        return -1;
        }
        flag2 = (*(s + 1) >= '0' && *(s + 1) <= '9');
        if (!flag2) {
        err = 11;
        printf("num is ilegal\n");
        return -1;
        }
        ++s;
    } else if (flag) {
        sum = sum * 10 + c - '0';
        isNumStart = true;
        if (sum >= maxInt) {
        break;
        }
        isZeroStart = false;
        ++s;
    } else {
        err = 11;
        printf("num is ilegal\n");
        return -1;

    }

    }
    if (isPositive) {
    return sum;
    }
    return -sum;
}

int main(int argc, char *argv[])
{

    if (argc != 2) {
    printf("input num please\n");
    return -1;
    }

    char *str = argv[1];
    int num = str_to_int(str);

    if (err) {
    printf("parse str to num is err\n ");
    return -1;
    }
    printf("num = %d\n", num);
    return 0;
}

该程序支持+,-开头,允许000开头

字符串转化成int

原文:https://www.cnblogs.com/wanshuafe/p/11546062.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!