zoukankan      html  css  js  c++  java
  • atoi函数原型

     一.atoi()函数的功能:

       1.定义: 将字符串转换成整型数,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('')结束转化,并将结果返回(返回转换后的整型数)。

       2.头文件: #include <stdlib.h>

       3.函数原型:int atoi(const char *nptr);

    4.实现时需要注意的问题:
    (1)检查字符串是否为空,为空则返回
    (2)对空格和规定字符的处理, 若是,则跳过,不影响接下来的处理(很多人的处理忘了规定字符这回事..)
    规定字符 具体作用
    换行
    f 清屏并翻页
    回车
    制表符









      结果仍然为11

       (3)正负号(+-)的处理

    (4)结束条件:遇到非数字或者字符''结束
    (5)溢出处理,正溢出返回int上限(2147483647),负溢出返回int下限
    int main(void)
    {
        char *a="-2147483650";
    int b=atoi(a); printf(" %d",b); return 0; }
    输出结果为-2147483648
    
    
        char *a="2147483649";
        int b=atoi(a);
        printf("    %d",b);
        return 0;
    输出结果为2147483647

       代码如下:

    #include<stdio.h> 
    #include<iostream> using namespace std; enum error{correct,incorrect,overflow,null}; int error=correct;//默认是正确的 int myatoi(const char *str) { int flag=1; if(str==NULL) { error=null; return 0; } while(*str==' '||*str==' '||*str=='f'||*str==' '||*str==' ') str++; if(*str=='-')//负数的处理,直接让计算得出的数乘-1即可 { flag=-1; str++; } else if (*str=='+')//注意对正负号我用的不是循环,正负号只有作为第一个字符出现才是合法的 str++; int num=0; while(*str!='')//*str==''也是结束条件之一 { if(*str>='0'&&(*str<='9')) { num=num *10+*str-'0';//注意是‘0‘
         //溢出处理稍后贴上
    str
    ++; } else { error=incorrect;//非法 break; } } return num*flag; } int main() { char str[30]; printf("请输入字符串:"); gets(str); int result = myatoi(str); switch(error){ case correct: cout << "字符串" << str << " 对应的整数是:" << result <<endl; break; case null: cout << "空指针错误" <<endl; break; case incorrect: cout << "输入的字符串中有非数字字符" <<endl; cout << result <<endl; break; case overflow: cout << "输入的字符串对应的数字使得Int类型溢出" <<endl; cout << result <<endl; } return 0; }

     

     

     

     

     

     

     

         

    
    
  • 相关阅读:
    C++我们必须要熟悉的事之具体做法(3)——类的设计与声明
    C++我们必须要了解的事之具体做法(1)——构造、复制构造、析构、赋值操作符背后的故事
    STL hash table, Unordered Contains
    多个生产者——多个消费者模型(互斥量条件变量实现)
    将UNIX网络编程卷2的库函数合并到卷1的库函数中
    进程间通信(三)——Posix共享内存区
    进程间同步(1)——条件变量和互斥量
    进程间通信(二)——Posix消息队列
    python使用百度翻译api
    screen命令
  • 原文地址:https://www.cnblogs.com/curo0119/p/7792627.html
Copyright © 2011-2022 走看看