zoukankan      html  css  js  c++  java
  • 典型c库函数的实现

    StrToInt:字符串转int输出

     1 enum Status 
     2 {
     3 kValid = 0,
     4 kInvalid = 1,
     5 };
     6 
     7 int StrToInt(const char* str)
     8 {
     9     g_nStatus = kInvalid;
    10     long long num = 0;
    11 
    12     if(str!=NULL && *str != '')
    13     {
    14         bool minus = false;
    15         while(*str =="")
    16             str++;
    17         if(*str =='+')
    18         {
    19             str++;
    20         }
    21         else if(*str=='-')
    22         {
    23             str++;
    24             minus = true;
    25         }
    26 
    27         if(*str !='')
    28         {
    29             num = StrToIntCore(str, minus);
    30        }
    31     }
    32     return (int)num;
    33 }
    34 
    35 int StrToIntCore(const char *digit, bool minus)
    36 {
    37     long long num = 0;
    38     while(*digit !='0')
    39     {
    40         if(*digit >='0' && *digit<='9')
    41         {
    42             int flag = minus ? -1:1;
    43             num =num*10 + flag*(*digit -'0');
    44 
    45             //判断整数是否发生上溢/下溢
    46             if((!minus && num > 0x7FFFFFFF) //最大正数:2^32-1
    47                 || (minus && num <(signed int)0x80000000))//最小负数:2^32
    48             {
    49                 num = 0;
    50                 break;
    51             }
    52             digit++;
    53         }
    54         else
    55         {
    56             num = 0;
    57             break;
    58         }
    59     }
    60     if(*digit=='')
    61     {
    62         g_nStatus = kValid;
    63     }
    64 
    65     return num;
    66 }

     char* strcpy(char* srcDest, const char* srcSrc)

     1 char *strcpy(char* strDest, const char *srcSrc)
     2 {
     3     assert((strDest!=NULL)&&(strSrc!=NULL));  //2分
     4     char *address = strDest;    //2分
     5     while(*srcSrc!='')      //2分
     6     {
     7         *strDest = *srcSrc;
     8         strDest++;
     9         strSrc++;
    10     }   
    11     return address;  //2分
    12 }
     返回char* 的原因:实现链式表达式
    1、就是方便一些,否则就要这样写:
     char strDest[12];
     strcpy( strDest, “hello world”);
     int length = strlen(strDest);
    什么链式就是一连串写下来的意思。。。
    2、strcpy()的参数本来就是指针类型,字符串的首地址。          
  • 相关阅读:
    Spring boot test
    SQL怎么输出前n个记录? n是中间计算得到的,不支持变量传递
    crontab 命令
    Python 素数判断;以及默尼森数
    精通Web Analytics 2.0 (1) 引言
    Python 编程小备忘
    Python 编辑器 tips
    Hadoop 权威指南学习1 (主要框架)
    ml的线性回归应用(python语言)
    python 学习5--matplotlib画图实践
  • 原文地址:https://www.cnblogs.com/chris-cp/p/3915167.html
Copyright © 2011-2022 走看看