1.int atoi(const char* src)

  • nullptr指针
  • 空白字符' ','\t','\n'
  • 符号位
  • 避免值溢出
  • 出错信息保存在全局变脸errnum中
 int errnum = ;
int atoi(const char* src){
if(src == nullptr) {
errnum = -; //empty string
return ;
} //remove whitespace characters.
while(*src == ' ' || *src == '\t' || *src == '\n'){
src++;
} int sign = ;
if(*src == '+'){
src++;
}else if(*src == '-'){
sign = -;
src++;
}
//only with sign bit
if(*src == '\0') {
errnum = -;
return ;
} long long res = ;
while(*src != '\0'){
if(*src >= '' && *src <= ''){
res = res * + *src - '';
if((sign == && res > 0x7fffffff) || (sign == - && (-*res) < (int)0x80000000)){
errnum = -; //out of range
return ;
}
}else{
errnum = -; //illegal character
return ;
}
src++;
}
return sign*res;
}

2. char* itoa(int val,char* buf,size_t radix)

  • 指针有效性判断
  • 符号位
  • 基数(10,16,2进制)
  • reverse操作
 char* itoa(int val,char* buf,size_t radix){
assert(buf != nullptr);
char* p = buf;
if(val < ){
*p++ = '-';
val = - * val;
} int a = ;
do{
a = val % radix;
val /= radix;
if(a > ){
*p++ = char(a-+'a');
}else{
*p++ = (char)(a + '');
}
}while(val != ); *p = '\0';
//reverse
size_t len = strlen(buf);
int left = ;
if(*buf == '-' || *buf == '+'){
left++;
}
int right = len - ;
while(left < right){
swap(buf[left++],buf[right--]);
}
return buf;
}

最新文章

  1. python中的enumerate
  2. Lining.js - 为CSS提供 ::nth-Line 选择器功能
  3. Ubuntu下修改system.img 解包system.img、打包system.img
  4. Debian安装中文输入法
  5. BZOJ-2186 沙拉公主的困惑 线性筛(筛筛筛)+线性推逆元
  6. 10324 - Zeros and Ones
  7. Memcache Slab Eviction 功能测试
  8. 索信达携手8Manage,打造项目管理系统信息化体系
  9. kubernetes进阶之五:Replication Controller&amp;Replica Sets&amp;Deployments
  10. IIS虚拟目录内的视频文件访问出错:HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
  11. Python学习笔记(1)-列表
  12. ABAQUS粘弹性边界及地震荷载施加的简单实现(Matlab生成input文件)
  13. 完善:HTML5表单新特征简介与举例——张鑫旭
  14. 思维导图_Python_内置函数
  15. JPA error org.hibernate.AnnotationException: No identifier specified for entity
  16. php juery ajax 传值
  17. 20145316许心远《Java学习笔记》第三周总结
  18. Android MVC,MVP,MVVM模式入门——重构登陆注册功能
  19. 使用sigaction来取代signal作为信号处理器函数
  20. android 文件上传,中文utf-8编码

热门文章

  1. 20169207《Linux内核原理与分析》第五周作业
  2. 通过domoticz restful接口更新数据 c# 控制台程序
  3. noip第6课作业
  4. mysql_变量
  5. 《计算机科学基础》学习笔记_Part 1 Computer and Data
  6. &lt;c:forEach varStatus=&quot;status&quot;&gt;中 varStatus的属性简介
  7. brctl命令
  8. Delphi程序带参数运行
  9. Android-Kotlin简单计算器功能
  10. Android-Recyclerview-GridView&amp;瀑布流等效果