典型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 = ...

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 != '\0')
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 !='\0')
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=='\0')
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!='\0')      //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()的参数本来就是指针类型,字符串的首地址。          

 

相关文章
|
4月前
|
C语言
模拟实现C语言中经典库函数,字符相关的函数与内存相关的函数
模拟实现C语言中经典库函数,字符相关的函数与内存相关的函数
模拟实现C语言中经典库函数,字符相关的函数与内存相关的函数
|
4月前
|
程序员 C语言 开发者
《C语言中的基石:库函数与自定义函数的深度解析与实践》
《C语言中的基石:库函数与自定义函数的深度解析与实践》
关于C库函数的一些模拟实现以及讲解思考
关于C库函数的一些模拟实现以及讲解思考
关于C库函数的一些模拟实现以及讲解思考
|
9月前
|
C语言
C语言预处理及宏和函数的区别与各自优劣点的详解(上)
C语言预处理及宏和函数的区别与各自优劣点的详解(上)
|
9月前
|
C语言
C语言预处理及宏和函数的区别与各自优劣点的详解(下)
C语言预处理及宏和函数的区别与各自优劣点的详解(下)
|
9月前
库函数的模拟实现
库函数的模拟实现
33 0
|
10月前
|
存储 安全 C语言
模拟实现一些库函数(2)(上)
模拟实现一些库函数(2)(上)
43 0
|
10月前
模拟实现一些库函数(1)(上)
模拟实现一些库函数(1)
21 0
|
10月前
|
C++
模拟实现一些库函数(2)(下)
模拟实现一些库函数(2)(下)
28 0
|
10月前
|
C语言
模拟实现一些库函数(1)(下)
模拟实现一些库函数(1)(下)
35 0