典型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 != ‘\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 }

典型c库函数的实现

时间: 2024-11-12 02:34:11

典型c库函数的实现的相关文章

sockets: DNS库函数的名字与地址转换

########################################################### DNS库函数的名字与地址转换 ###################################################### 通常给出的是数值地址(也就是IP地址),不方便记忆: 域名系统(DNS):用于在主机名字和IP地址之间的映射. /etc/resolv.conf包含本地名字服务器主机的IP地址. 获取名字和地址信息的方法: 1.使用DNS 2.静态主机文件

Code Review的一些典型内容

如下是Code Review中一些典型的内容: 一.常规项: 1.代码能够工作么?它有没有实现预期的功能,逻辑是否正确等. 2.所有的代码是否简单易懂? 3.代码符合你所遵循的编程规范么?这通常包括大括号的位置,变量名和函数名,行的长度,缩进,格式和注释. 4.是否存在多余的或者重复的代码? 5.代码是否尽可能的模块化了? 6.是否有可以被替换的全局变量? 7.是否有被注释掉的代码? 8.循环是否设置了长度和正确的终止条件? 9.是否有可以被库函数替代的代码? 10.是否有可以删除的日志或调试代

快速掌握Lua 5.3 —— 编写提供给Lua使用的C库函数的技巧 (2)

Q:什么是"registry"? A:有时候,我们需要在程序中使用一些非局部的变量.在C中我们可以使用全局变量或是静态变量来实现,而在为Lua编写C库的过程中,使用以上类型的变量并不是一个好的方式.首先,这些变量中无法存储Lua的值.其次,这些变量如果在多个Lua状态机中被使用,则很可能造成非预期的结果. 一个替代方案是,将这些值存储在Lua的全局变量中.这种方式解决了上面提到的两个问题,Lua全局变量可以存储任何Lua的值,同时每一个Lua状态机都有自己独立的一套全局变量.但这依旧不

GNU Readline库函数的应用示例

说明 GNU Readline是一个跨平台开源程序库,提供交互式的文本编辑功能.应用程序借助该库函数,允许用户编辑键入的命令行,并提供自动补全和命令历史等功能.Bash(Bourne Again Shell).GDB.ftp 和mail等程序就使用Readline库提供其命令行界面. Readline是GNU通用公共许可证版本3(GNU GPLv3)下的自由软件.这意味着若发布或分发的程序使用Readline库,则该程序必须是自由软件,并持有GPL-兼容的许可证.当然,用户也可使用自己的实现替代

Lua 字符串库函数总结

字符串库 注:字符串在Lua中是不可变的,任何的string操作都不会去改变原有的字符串,都是返回新的字符串 一.一般函数 1. 求长度 s = "Hello LUA "; print(string.len(s)); print(#s); 2. 重复 print(string.rep(s,3));   -- s 重复了3次 3. 大小写转换 print(string.upper(s)); print(string.lower(s)); -- 大小写的一个典型用途,假如要对一个字符串进行

BFS 典型的迷宫问题

这个是BFS搜索的典型问题,好好整理一下: 给定一个迷宫,入口为左上角,出口为右下角,问是否有路径从入口到出口,若有则输出一条这样的路径.注意移动可以从上.下.左.右.上左.上右.下左.下右八个方向进行.迷宫输入0表示可走,输入1表示墙.易得可以用1将迷宫围起来避免边界问题.本题采用BFS算法给出解.注意,利用BFS算法给出的路径必然是一条最短路径. input: 1 6 8 0 1 1 1 0 1 1 1 1 0 1 0 1 0 1 0 0 1 0 0 1 1 1 1 0 1 1 1 0 0

解析库函数调用与系统调用的区别

基于上一篇文章,系统调用的实现原理,计算机系统的各种硬件资源是有限的,而在现代多任务操作系统上的多个进程都需要这些资源,为了更好的管理这些资源,进程是不允许直接访问的,而是在操作系统的控制下访问,因此操作系统是使用这些资源的唯一入口,而这个入口就是操作系统的系统调用,系统调用属于系统内核的一部分,因此运行在内核态的进程可以直接访问这些资源,而用户态的进程如果想要访问需要先通过中断切换为内核态才可以访问. Linux中处理系统调用的方式与中断类似.每个系统调用都有相应的系统调用号作为唯一的标识,内

Linux 库函数与系统调用的关系与区别

上周总结了<C 标准库的基础 IO>,其实这些功能函数通过「系统调用」也能实现相应功能.这次文章并不是要详细介绍各系统调用接口的使用方法,而是要深入理解「库函数」与「系统」调用之间的关系和区别. 一.系统调用 系统调用,我们可以理解是操作系统为用户提供的一系列操作的接口(API),这些接口提供了对系统硬件设备功能的操作.这么说可能会比较抽象,举个例子,我们最熟悉的 hello world 程序会在屏幕上打印出信息.程序中调用了 printf() 函数,而库函数 printf 本质上是调用了系统

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 选择调用的进程为 24 i386 getuid sys_getuid1647 i386 getgid sys_getgid16 使用库函数API方式 使用C代码中嵌入汇编代码方式