对常见的几个函数,周末没事写写,绝对是笔试面试中非频繁,前面n届学长无数次强调了,大家就别怀疑了。从今天开始,每天10道题。

int atoi(const char* str)
{if(str==NULL) return 0;bool sigFlag=true;int i=0;int sum=0;
while(str[i]!='\0')
{if(str[i]=='+')sigFlag=true;else if(str[i]=='-')sigFlag=false;else if(str[i]<='9'&&str[i]>='0'){sum=sum*10+str[i]-'0';}else{}
i++;
}
if(sigFlag==false)sum=0-sum;
return sum;}

以上的有几个要点没注意到,一是没检测溢出,而是没处理好空格,三是诸如a34d5之类的字符串没处理好。

改进后如下:

int atoi(const char* str)
{  if(str==NULL) return 0;  bool sigFlag=true;  int i=0;  int sum=0;  while(str[i]==' ') i++;while(str[i]!='\0')  {  if(str[i]=='+')  sigFlag=true;  else if(str[i]=='-')  sigFlag=false;  else if(str[i]<='9'&&str[i]>='0')  {  sum=sum*10+str[i]-'0';  if((sigFlag && sum>0x80000000)||(!sigFlag && sum>0x7fffffff )){sum=0;break;}}  else  {  break;}
i++;
}
if(sigFlag==false)  sum=0-sum;
return sum;  }  

itoa:

char* itoa(int inputInt)
{if(inputInt<0)inputInt=0-inputInt;int num=inputInt;int i=0;while(inputInt/=10)i++;char* p=new char[i+2];int j=0;int tmp;do{ p[j++]=num%10+'0';num=num/10;}while(num);p[j+1]='\0';for(int k=0;k<(i+1)/2;++k){tmp=p[k];p[k]=p[i-k];p[i-k]=tmp;   }
delete []p;
return p;
}

strcpy:

void Strcpy(char* dstStr,const char* srcStr)
{if(srcStr==NULL||srcStr==NULL)return;while(*dstStr++=*srcStr++){}}

memcpy:

void Memcpy(void* pmemTo,const void* pmemFro,int count)
{
 if(pmemTo==NULL||pmemFro==NULL) return; 
char* pbTo=(char*)pmemTo; 
char* pbFro=(char*)pmemFro;     
while(count)
 { 
 *pbTo++=*pbFro++;  
count--; 
}
}

  strCmp:

 

int strCmp(const char* dstStr,const char* srcStr)
{assert(dstStr!=NULL&&srcStr!=NULL);while(*dstStr++==*srcStr++ && *dstStr!='\0')return *dstStr-*srcStr;}

二分查找:

int BinarySearch(int* arr,int n,int key){assert(arr!=NULL);int left,right;left=0;right=n-1;int i=0;int iResult=-1;while(true){i=(right-left)/2;if(right-left==0){if(key==arr[left]) {iResult=left;}break;}else if(key>arr[i]){left=i+1;}else if(key<arr[i]){right=i-1;}else{iResult=i;break;}}return iResult;}

strcat:

char* StrCat(char* dstStr,const char* srcStr){char* strResult=dstStr;while(*dstStr++!='\0'){}dstStr--;while(*dstStr++=*srcStr++);return strResult;}

转载于:https://www.cnblogs.com/suncoolcat/p/3299558.html

工作的准备:atoi,itoa,strcpy,memcpy,strcmp,二分查找,strcat相关推荐

  1. 《strcmp,strcpy,memcpy,memmove等函数模拟实现》

    模拟实现常见字符串函数比如:strcmp,strcpy,memcpy,memmove等函数 1.模拟实现memcpy函数 2.模拟实现memmove函数 3.模拟实现strstr函数 4.模拟实现st ...

  2. 如何用C语言实现各种字符函数和字符串函数strstr、memcpy、memmove、strlen、strcpy、strcmp、strcat

    用C语言模拟实现字符函数与字符串函数 strstr.memcpy.memmove.strlen.strcpy.strcmp.strcat 若使用本文相关代码,还请动手点个赞!!! #define _C ...

  3. C语言之字符串探究(三):字符串库函数操作——strlen、strcat、strcpy、strcmp

    相关博文:C++之char和string字符串类探究 相关博文:C语言之数组探究(一):定义.大小.初始化.访问和三要素 相关博文:C语言之字符串探究(一):字符串与字符数组 相关博文:C语言之字符串 ...

  4. C语言之字符串探究(二):字符串原生操作——strlen、strcat、strcpy、strcmp自实现

    相关博文:C++之char和string字符串类探究 相关博文:C语言之数组探究(一):定义.大小.初始化.访问和三要素 相关博文:C语言之字符串探究(一):字符串与字符数组 相关博文:C语言之字符串 ...

  5. 【C语言】库函数的使用与模拟实现(strlen、strcpy、strcmp....

    经历了C语言基础篇的学习,让我们来简单了解几个C语言的库函数! 目录 1.strlen 2.strcpy 3.strcmp 4.strcat 5.strstr 6.strtok 7.字符分类函数 8. ...

  6. c语言字符串函数strcat strcpy strlen strcmp的用法及原型

    目录 strcat的用法及原型 strcpy的用法及原型 strcmp用法及原型 strlen用法及原型 strcat的用法及原型 strcat(str1,str2) 意为将字符串str2连接到字符串 ...

  7. C语言字符串函数strcat | strcpy | strlen | strcmp的用法及原型

    点击蓝字 关注我们 因公众号更改推送规则,请点"在看"并加"星标"第一时间获取精彩技术分享 来源于网络,侵删 strcat(str1,str2) 意为将字符串s ...

  8. strlen、strcpy、strcmp、strcat函数的实现

    目录 一.strlen函数的实现 二.strcpy函数的实现 三.strcmp函数的实现 四.strcat函数的实现 五.代码示例展示 strlen.strcpy.strcmp.strcat四个函数都 ...

  9. LeetCode 1235. 规划兼职工作(动态规划+二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 你打算利用空闲时间来做兼职工作赚些零花钱. 这里有 n 份兼职工作,每份工作预计从 startTime[i] 开始到 endTime[i] 结束,报酬为 ...

最新文章

  1. hadoop配置安装
  2. python系统-python系统介绍
  3. .xhr长轮询_使用Spring 3.2的DeferredResult进行长轮询
  4. Bootloader传参数到Kernel
  5. java语言用数组接收字符_Java基础——数组应用之字符串String类
  6. c# equals与==的区别(转载)
  7. windows安装软件最好使用独立的文件夹
  8. 把ICDAR2019-LSVT原始数据集转为REC任务识别数据
  9. 输入一个三位数,求个位十位百位java代码
  10. python for maya教程_Python for Maya 教程 – Artist Friendly Programming
  11. 微信卡券开发错误自排查参考文档
  12. 一寸照片制作—Photoshop学习(1)
  13. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(昆明)(热身赛) C-Statues 题解【dp】【动态规划】
  14. 获取本地视频文件的缩略图
  15. 【基础知识】~ 建立时间/保持时间
  16. html中怎样写渐变色代码,如何用CSS写渐变色
  17. 最新IP数据库 全球IP数据库 IP城市数据库 2019年6月版
  18. 动物数据集+动物分类识别训练代码(Pytorch)
  19. Linux桌面基础:X Window System——Xorg
  20. 介绍2款最流行的画PCB工具

热门文章

  1. Android聊天背景图片变形解决方案
  2. 微软IT规划方法论解读
  3. 计算机房档案管理,机房档案资料管理制度
  4. python写我爱你_12个精选Python教程我的初恋故事。
  5. 开源中国 开源世界2018_2018年最受欢迎的报道:法律问题和开源社区
  6. 开源软件生态_基础,亮点和建立成功的开源生态系统
  7. 领域驱动 开源项目_我如何在开源领域找到工作
  8. 执行流程 | 你真的了解Spring AOP的执行顺序吗?
  9. 微信小程序自定义组件(二)
  10. JavaScript之常见算法排序