《剑指Offer》面试题:将字符串转换为整数

本文探讨如何将字符串转化为整数,重点在于处理特殊情况和优化代码。介绍了初始实现以及从他人博客中学习到的高效方法,强调了处理正负号、非法字符和溢出问题的重要性。该主题常作为面试题,能体现程序员的思维和编程习惯。
摘要由CSDN通过智能技术生成

题目

题目:把字符串转化为整数 ,若输入无效,则返回0且将标志位设为true

自己以前在一些书上面看到过关于 字符串转化为整数的例子,心中有点印象,知道要考虑一些特殊情况。今天决定写下这段代码,发现代码写的稀烂,重复度太大,需要改善。

刚实现的代码如下:

/*
题目:把字符串转化为整数 ,若输入无效,则返回0且将标志位设为true; 

需要考虑的测试用例如下:
1)"123"
2)"+123"  //带符号的正数输入 
3)"-123"
4) "  abd123 " //非法输入
5)  NULL 
*/

#include<stdio.h>
#include<string.h>


/*功能:检查str中的字符是否全部是由数字构成 ,若是,则返回true,否则返回false 
@param str:字符串
@param begin:字符串的起始下标 
@parameter  end:字符串的 终止下标 
*/
bool checkStr(char *str,int begin,int end){
    if(begin<end){
        for(int i=begin;i<end;i++){
        if(!(str[i]>='0'&&str[i]<='9')){
            return false;
        }
        }
        return true; 
    }
    else{
        return false;
    }



}
/*
开始转换 
*/
int beginStringToNum(char *str,int begin,int end){
    int num=0;
    for(int i=begin;i<end;i++){
        num=num*10+str[i]-'0';
    }
    return num;
}
void strToNum(char *str){
    bool str_illege=false; 
    int num=0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值